1.cin
- cin>>只读取第一个非空白字符,使用cin>>读入时,它将忽略前面的所有空格,不能实现按任意键继续的功能。
2.cin.get
- cin.get读取输入中的第一个字符,包括空格、Tab、Enter。
- 用>>读入,使用cin>>读入时,它将忽略前面的所有空格,不能实现按任意键继续的功能。
- 在程序设计中,会遇到要读取一个字符的情况,如,系统提示按任意键继续。这时则可使用cin.get(),cin.get读取输入中的第一个字符,包括空格、Tab、Enter。
char ch;
cin.get(ch);
3.cin.ignore
将cin>>和cin.get混用,往往会出现难以发现的问题
int num;char ch;
cou <<"输入一个整数";
cin >>num;
cout <<"输入一个字符";
cin.get(ch);
- 当给num输入100,ch输入H时,发现输入100后cin.get被自动跳过,无法输入H,这是因为输入100并按Enter 键后,Enter键被留在缓冲区中,当程序执行到cin.get后自动读入缓冲区中的Enter键。
- 解决方法是使用cin.ignore
cin.ignore(n, c);
n是一个整数,c是一个字符,含义是cin跳过n个字符,或者直到遇到字符c时为止。如果没有参数,将默认跳过键盘缓冲区中的第一个字符。
解决方法如下:
cou <<"输入一个整数";
cin >>num;
cin.ignore();
cout <<"输入一个字符";
cin.get(ch);
cin.ignore常用功能:清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。
4.cin.getline
- cin提供函数成员getline,一次读取一行。
cin.getline(sentence, 20);
函数的第一个参数是数组名,第二个参数是待读取的字符个数(含空字符),上述语句将最多读取19个字符,最后一个位置用于存储’\0’。
正常情况下cin会忽略输入的第一个空格符,不输入至缓冲区;并且输入的字符会以’\0’(空格符)结束;
5.cin.width
char word[5];
cin.width(5);
cin >> word;
上面的程序,cin只读取4个字符到字符数组,最后一个字符为"\0"自动添加。cin.width指定了输入域宽,上面程序指定输入域宽为5。
cin >> setw(5) >> word;
- 与上面程序效果一样。
域宽只对与其相邻的下一个输入有效。
当cin遇到空字符时它将停止读入。
cin读取一定的字符后,多与字符将留在缓冲区中。
本文详细介绍了C++中的几种输入流操作,包括cin、cin.get、cin.ignore和cin.getline的用法。cin会忽略空格,而cin.get能读取包括空格在内的所有字符。当混合使用cin>>和cin.get时可能出现问题,可以通过cin.ignore来解决。此外,cin.getline用于读取一整行,cin.width可以设置输入域宽。
1571

被折叠的 条评论
为什么被折叠?



