- 键盘输入数据到程序——标准输入input(cin);
- 程序数据输出到显示器——标准输出output(cout);
- 标准输入+标准输出=标准I/O
- 文件的输入和输出——文件I/O。
cout;//标准输出—输出数据到显示器 cin;//标准输入—输出数据到显示器 cerr;//标准错误—输出数据到显示器 clog;//标准日志—输出数据到显示器
cerr和clog区别:cerr没有缓冲区,clog有缓冲区。
标准输入流cin,重点掌握函数,如下:
cin.get();//一次只能读取一个字符 cin.get(一个参数);//读取一个字符 cin.get(两个参数);//可以读字符串 cin.getline();//读取一行数据 cin.ignore(n);//忽略n个字符 cin.peek();//查看缓存中第一个字符 cin.putback();//给缓存中放数据
get()和peek()区别:
get()取出缓存区中的数据;
peek()查看缓存区的第一个字符,不会取走;
1.测试:cin.get()
将数据从缓冲区拿走。
如果缓冲区没有数据,会发生阻塞,等待用户输入数据,然后再从缓冲区拿走。
void test01() { char ch; //cin.get()会从缓冲区拿取数据 //EOF是键盘输入结束标志,Ctrl+Z结束 while ((ch=cin.get())!=EOF) { cout << ch << endl; } }
结果:
2.测试:cin.get(一个参数)
char ch1; cin.get(ch1);//读取一个字符 cout << ch1;
结果:
3.测试:cin.get(两个参数)
从缓冲区读取一个字符串
char buf[256] = { 0 }; cin.get(buf, 256);//从缓冲区读取一个字符串
4.测试:cin.getline()
读取一行数据
char buf[256] = { 0 }; cin.getline(buf, 256);//读取一行数据
5.测试:cin.ignore()
- cin.ignore() 忽略一个字符;
- cin.ignore(n) 忽略n个字符;
- cin.ignore(n,’n’) 忽略n个字符,但遇到回车结束;
char ch; cin.get(ch); cout << "输出ch=" << ch << endl; cin.ignore();//忽略一个字符 cin.get(ch); cout << "输出ch=" << ch << endl;
结果:
修改:
cin.ignore(2);//忽略两个字符
6.测试cin.peek()
偷窥一下缓冲区,返回第一个字符,不是取走!!!字符还在缓冲区。
案例1:
char ch; ch = cin.peek();//偷窥一下缓冲区,返回第一个字符 cout << ch << endl;
结果:
案例2:(好好看!!!)
void test04() { char ch; ch = cin.peek();//偷窥一下缓冲区,返回第一个字符 if (ch >= '0' && ch <= '9') { int number; cin >> number;//cin将缓冲区数据给number cout << "你输入的是数字:" << number << endl; } else { char buf[1024] = { 0 }; cin >> buf; cout << "你输入的是字符串:" << buf << endl; } }
结果:
6.测试:cin.putback()
与cin.get()对应,将从缓冲区拿走的数据,再放回缓冲区。
char ch; cin.get(ch);//从缓冲区取走一个字符 cout << "缓冲区第一位是:" << (char)cin.peek() << endl; if (ch >= '0' && ch <= '9') { cin.putback(ch); int number; cin >> number; cout << "输入的是数字:"<> buf; cout << "输入的字符串是:" << buf << endl; }
结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)