C++中的字符串输入,大体分为三种输入方式 1、cin >> () 2、cin.getline 3、cin.get
- 当通过cin进行输入时,若输入字符中存在空格,回车等,程序将自动结束剩下的字符输入,剩下的字符将全部放在下个cin进行输入 ,即cin 只能实现简单的单词输入,使用了cin 记得要处理回车键,因为cin >> 是不会丢弃回车键,因此会把回车键放在下一个输入。代码如下所示:
const int SIZE = 20; char name[SIZE]; char dessert[SIZE]; cout << "Enter your name:\n"; cin >> name; cout << "Enter your favorite dessert:\n"; cin >> dessert; cout << "Hello " << name << " I have some " << dessert << " for you.\n";
运行结果:
你会发现,你根本不需要输入dessert,程序自动进行显示,原因就在于Tan Yue名字中有空格,程序cin >> name只单独提出Tan 而把 Yue丢给 cin >> dessert。
-
cin.getline 可以输入一行字符(不忽略空格) ,直到遇见回车键(丢弃回车键,回车键将自动转换为空字符),或者直接到字符串的最末端(只能输入n-1位)第n位将自动给空字符,若输入字符没有到n位,则getline()函数还提供了第三个参数。
const int SIZE = 20; char name[SIZE]; char dessert[SIZE]; cout << "Enter your name:\n"; cin.getline(name, SIZE); cout << "Enter your favorite dessert:\n"; cin.getline(dessert, SIZE); cout << "Hello " << name << " I have some " << dessert << " for you.\n";
运行结果:
-
get()函数不丢弃回车键,因此需要使用一个多余的get()来存放回车键
const int SIZE = 20; char name[SIZE]; char dessert[SIZE]; cout << "Enter your name:\n"; cin.get(name, SIZE).get(); cout << "Enter your favorite dessert:\n"; cin.get(dessert, SIZE).get(); cout << "Hello " << name << " I have some " << dessert << " for you.\n";
运行结果:
即回车键被get()函数所接受。