目录
-
使用cin进行获取
示范1:
#include <iostream>
using namespace std;
int main()
{
char name[20];
char food[20];
cout << "Enter your name: \n"; // 输入你名字
cin >> name;
cout << "Enter your favorite food: \n"; // 输入你喜欢的食物
cin >> food;
cout << "My name is " << name << " like " << food;
return 0;
}
结果1:
cin将“wu”作为第一个字符串,放在了name中,将“ji”作为第二个字符串,放在了food中。达不到我们想要的效果。因为cin是使用空格、制表符和换行符来确定字符串结束位置。"wu ji"中间存在空格,所以分开存储。
ps:存储时会自动在字符串后添加空值字符,再存储。如“wu”——>“wu\0”
-
使用cin.getline()
示范2:
#include <iostream>
using namespace std;
int main()
{
char name[20];
char food[20];
cout << "Enter your name: \n"; // 输入你名字
cin.getline(name, 6);
cout << "Enter your favorite food: \n"; // 输入你喜欢的食物
cin.getline(food, 9);
cout << "My name is " << name << " like " << food;
return 0;
}
结果2:
此时cin.getline()会以回车键输入的换行符来确定结尾,读取这一行规定的字符,存储到指定的数组中。
ps:空格也算一个字符,而且给定范围时要比可见的字符加一,如"wu ji"是五个字符,但是范围为六,因为存储时会在最后一位存储一个空字符。否则会丢弃换行符。
如果我们给定范围小了会怎么样呢?如cin.getline(name,6)——>cin.getline(name,4)
会把"ji"给丢了 ,同时丢掉的换行符会传给下一个cin.getline()导致报错。
-
使用cin.get()
示范3:
#include <iostream>
using namespace std;
int main()
{
char name[20];
char food[20];
cout << "Enter your name: \n"; // 输入你名字
cin.get(name, 6).get();
cout << "Enter your favorite food: \n"; // 输入你喜欢的食物
cin.get(food, 9).get();
cout << "My name is " << name << " like " << food;
return 0;
}
结果3:
因为get()不会丢掉换行符,所以说需要get(name,6).get()