在众多的笔试面试题中,难免会碰到需要读取字符串或字符的题目,如果不能正确的读入输入,那么对于程序正确与否,无需多谈。 一、cin cin使用空白符——换行,制表符,空格作为输入的界定符,可以读取单个字符,整数,字符串(字符数组);当读取字符数组时,在读取结束时会自动的添加空值字符在末尾;会跳过空白字符。
二、cin.get(),cin.get(ch),cin.get(arr,arrSize)
1、cin.get() 返回输入字符的ASCII码,不论什么字符(即使是空格换行,制表符等)均被读入,且每次读取一个字符。
2、cin.get(ch) 读取一个字符,并将字符赋给ch ;注意:不能对于整型使用cin,get(i);
3、cin.get(arr,arrSize) 读取字符串到数组arr,最长读取长度为arrSize-1,因为最末尾会自动置0;以换行符为输入结束符,且\n会留在缓存区;
三、cin.getline(arr,arrSize) 以换行符为输入结束符,\n符会被丢弃
cin.getline(arr,arrSize,结束符) 读取直到遇到结束符,若超过长度,自动置末尾为结束
getline(cin,string对象) 读取string对象,需要添加string头文件
很多地方都不够详尽,仅写出一些基本用法。
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i1,i2;
char c1,c2,c3[15],c4[15];
cin>>i1>>c1;
i2=cin.get();
c2=cin.get();
cin.get(c3,15);
cin.get(c4,15,'~');
cout<<"i1="<<i1<<",i2="<<i2<<"\n";
cout<<"c1="<<c1<<",c2="<<c2<<"\n";
cout<<"c3="<<c3<<",c4="<<c4;
return 0;
}
可以看到,第二个输入虽然前面有空格但是cin会跳过空格,直到遇到2和f,cin.get遇到空格照样读入,只有当回车时(因为缓存)才会输入。