C++标准输入、输出
cout
#include <iostream> //标准输入输出流 int main(){ int num=0; std::cout<<"请输入一个值:"; std::cin>>num; //用户输入一个值给变量num //c表示终端,in表示输入,>>输入操作符 std::cout<<num <<std::endl; //c表示终端,out表示输出,<<输出操作符 //endl 结束换行 }
char str[20] = "\0"; //字符数组初始化\0 printf("请输入字符串:"); gets_s(str); //读取一行 //必须是char型数组,不能是其他类型数组 //遇到换行符和文件结尾符停止读取,无读取返回NULL //注意:使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符。这就意味着,如果前面使用过 gets(),而后面又要从键盘给字符变量赋值的话就不需要吸收回车清空缓冲区了,因为缓冲区的回车已经被 gets() 取出来扔掉了 //需要 #include <stdio.h> printf("%s\n", str);
cin
在理解cin功能时,不得不提标准输入缓冲区。当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符\n也会被存储在cin的缓冲区中并且被当成一个字符来计算!比如我们在键盘上敲下了123456这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是7 ,而不是6。
cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发cin的成员函数去读取数据
cin的常用读取方法
使用cin从标准输入读取数据时,通常用到的方法有cin>>,cin.get,cin.getline
cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符
#include <iostream> using namespace std; int main() { char a; int b; float c; cin >> a >> b >> c; cout << a << " " << b << " " << c << " " << endl; system("pause"); //暂停 return 0; }
注意:
(1)当cin>>从缓冲区中读取数据时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,cin>>不做处理。
(2)不想略过空白字符,那就使用 noskipws 流控制。比如cin>>noskipws>>input;
看 https://blog.csdn.net/bravedence/article/details/77282039