#include <iostream>
using namespace std;
int myCount = 0;
int main()
{
char a;
cin.get(a);
while (cin)//或者是!cin.fail()
{
cout << a;
++myCount;//前缀++效率更高
cin.get(a);
}
cout << endl << "输入结束,一共输入了" << myCount << "个字符";;
}
对于输入来说,有三种选择:cin、cin.get(char)与cin.get()。要考能否正确地读入空格、制表符与回车等特殊的字符,还要正确地指示输入完毕。
1.当cin遇到空格、制表符与回车等时就会结束输入,因此不能将这些字符读入
2.cin.get(char)与cin.get()二者是重载函数,可以理解为同一函数名,但是输入的参数情况不同就会执行不同的函数)都可以读入以上三种特殊的字符,但是二者也有很大的不同。cin.get(char)会将读入的字符直接赋值给变量,当读到EOF(检测文件尾,不同的环境不同,一般来说是ctrl+z,但在我的win+vs+控制台输出上是ctrl+c)时,cin.fail()与cin都会返回false(可以理解为不能进行cin输入了),可以通过检测这两个返回值来确定是否结束输入;cin.get()会将函数返回值赋给相应的变量,当不是EOF时返回值是字符本身,当是EOF时,会返回“EOF”(依环境而定,一般为-1),因此可以通过检测cin.get()返回值来确定是否结束输入。
3. 需要注意的是cin.get()返回值需要使用整形(int)变量来接受,而cin.get(char)可以使用字符型(char)变量来接受,这是因为cin.get()可能会返回-1,char无法承载。
本文详细比较了C++中cin、cin.get(char)与cin.get()在处理空格、特殊字符及EOF时的不同行为,强调了它们在输入检测和数据类型处理上的差异。
3974





