#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无法承载。