cin读入空格问题
2019-03-17 本文已影响0人
不想当社畜
使用cin读入空格遇到的问题
当我使用 std::cin 每次读入一个字符,遇到空格就停止,使用以下代码无论如何都实现不了。
#include<iostream>
int main(){
char c;
while(std::cin >> c){
if( ' '== c ) break;
std::cout<<c<<std::endl;
}
return 0;
}
发现无论怎么输入空格都不会使函数停止!并且显然直接掠过了空格的方式。
abcd acv
a
b
c
d
a
c
v
原因默认情况下,std::cin 函数从终端输入是跳过前导空白符(空格 tab 回车等 不会出现在终端的符号)
当想实现std::cin 不略过前导符号,使用std::noskipws操纵符来控制输入。
#include<iostream>
int main(){
char c;
// while(std::cin >> c){
while(std::cin >> std::noskipws >> c ){ // 使用输入操作符即可控制输入不跳过前导符号
if( ' '== c ) break;
std::cout<<c<<std::endl;
}
return 0;
}
结果显示正确:
abc cd
a
b
c
直接省略cd字符。
参考
c++中文