cin
cin本身是会略过所有空格,回车,tab然后开始读入,遇到空格,回车,tab停止读入,光标会停留在这这些字符之前。意思就是下一次读入也会从空格回车这些东西开始读入。
cin.get()
cin.get()是一个读入单个字符的输入方式,特别的,可以读入*空格回车tab。
char a, b, c;
a = cin.get();//cin.get(a);
b = cin.get();//cin.get(b);
c = cin.get();//cin.get(c);
cout<<a<<b<<c;
a = cin.get();//cin.get(a);
cout<<a<<"看看这个a是不是回车"<<endl;
1 1
看看这个a是不是回车
发现第一次输出的b和第二次输出的a是空格和回车。
另外cin还有cin.get(指针,读入长度,终止字符)的用法
cin.get(a, 10, '\n'); 里面的三个参数分别是一个指针,后面读入的数据的长度,以及中间如果碰到第三个参数的字符提前停止
要注意的是,读入的字符的长度是第二个参数减一,并且在读满长度或者遇到终止字符时,终止字符都会保留下来,也就是输入的光标在那个字符之前。
char a[100], b[100];
cin.get(a, 10, '\n');
cout<<a<<endl;
cin.get(b, 10, '\n');
cout<<b<<endl
输入:
qqqqqqqqqqqq//十二个q
输出:
qqqqqqqqq
qqq
输入:
qqqqqqq//七个q
输出:
qqqqqq
//b读到第一个回车就直接停止了
cin.ignore()
如果不给cin.ignore()参数,默认就是cin.ignore(1, EOF),单纯的就是忽视掉一个字符,包括空格回车tab
如果给cin.ignore()参数,那么就是cin.ignore(a, 'c'),意思是忽略掉a个字符或者当前忽略的字符是c,就会停止忽略,要注意的是这里的c是已经忽略了
cin.ignore(100, 'o');
char a = cin.get();
cout<<a<<endl;
输入:
1111o
输出:
//输出是空的,只有一个回车
cin.getline()
cin.getline()和cin.get()类似,参数的给定形式是一样的,意义也是一样的,区别就是getline在读到结束字符的时候光标会移动到结束字符的下一位,和cin.get()一样,不会将那个结束字符读进来。
attention:但是当输入一行的数据的长度大于给定的第二个参数的情况,电脑具体如何读入还没有弄明白,但是需要将第二位开到足够大,getline就是一个很不错的读入一行的方法。
char a[100], b[100], c;
cin.getline(a, 5, '\n');
cin.getline(b, 5, '\n');
cout<<a<<b;
输入:
qqqq
qqqq
输出:
qqqqqqqq