导语
在读入字符(串)时,常常不确定是否读入了空格、tab等,因此做了如下总结,以方便使用。
字符
在读入字符时,如果我们用scanf(“%c”)读入是不会忽略空格以及回车的,所以很有可能读不到想要的数据,所以为了保险起见,我们在读入单个字符的时候也可以选择用字符串方式来读入
字符串
scanf和cin读入字符串时,读至空格、tab、回车等会停下
cin.getline()可以读入空格等
char op[100];
//不读入空格等
scanf_s("%s", op,100);//第三个参数为读入字符的长度
cin >> op;
//读入空格等
cin.getline(op, 100, '\0'); //第三个参数为结束字符,默认为 '\0'
//输出
puts(op);//puts() 末尾自动添加 \n
cout << op << endl;
string
cin 不读入空格、tab等
getline() 读入空格等,需要#include[HTML_REMOVED]
// 不读入空格等
string op;
cin >> op;
cout << op << endl;
// 读入空格等
string op;
getline(cin, op);
cout << op;
注意事项
- cin.getline属于istream流,而getline()属于string流
- 当同时使用cin>>,getline()时,需要注意的是,在cin输入流完成之后,getline()之前,需要通过
str = "\n";
getline(cin,str);
这种方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。