命名空间
命名空间是为了解决命名冲突的
Q:C语言是如何解决命名冲突的?
运算符: ::(作用域限定符)作用域限定符
命名空间可以嵌套
尽量少用using导入命名空间 因为会导致命名冲突
Using namespace std//此命名空间存放的是C++相对C升级的功能(库文件 函数变量)
//cout printf 缓冲区
cin.getline()
用法:接收一个字符串,可以接收空格并输出
#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}
cin cout cerr clog
Cin :一个istream对象,用来从标准输入读取数据。
Cout:一个ostream对象,用于将数据写入标准输出。输出的数据是一种被动缓冲,经过缓冲区而直接输出(该种输出方式可以看到整段和这句同时出现显示设备上)
cerr:一个ostream对象,关联到标准错误,通常写入到与标准输出相同的设备。默认情况下,写到cerr数据是不缓冲的(未经缓冲区直接输出,可以看到字母是一个个输出)
clog:一个ostream对象,写到clog的数据是被缓冲的,通常用于生产报告程序的执行信息,存入一个日志文件中。
#include<iostream>
using namespace std;
int main()
{
const char *ptr = "hello world";
char temp = 'X';
int num = 6;
double b = 1.314;
cout << "hello world\n"
<<""
<<"hi" << endl;
cout << "ptr = " << ptr << endl;
cout << "temp = " << temp << endl;
cout << "num = " << num << endl;
cout << " b = " << b << endl;
cout << "ptr = " << hex << num << endl;
cout << "&num" << &num << endl;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int num;
char src[100];
double b;
cout << "please input num:";
cin >> num;
getchar();
cout << "please input src:";
cin.getline(src,100);
cout << " num : " << num << endl;
cout << "src : " << src << endl;
}
#include<iostream>
using namespace std;
int main()
{
cerr << "hello world" << endl;//dup dup2
clog << " hello world" << endl;
return 0;
}
dup和dup2函数
这两个函数都可以来复制一个现有的文件描述符
关于dup函数,当我们调用它的时候,dup会返回一个新的描述符,这个描述一定是当前可用文件描述符中的最小值。我们知道,一般的0,1,2描述符分别被标准输入、输出、错误占用,所以在程序中如果close掉标准输出1后,调用dup函数,此时返回的描述符就是1。
对于dup2,可以用fd2指定新描述符的值,如果fd2本身已经打开了,则会先将其关闭。如果fd等于fd2,则返回fd2,并不关闭它。