美文网首页
cin读入空格问题

cin读入空格问题

作者: 不想当社畜 | 来源:发表于2019-03-17 23:07 被阅读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++中文

相关文章

网友评论

      本文标题:cin读入空格问题

      本文链接:https://www.haomeiwen.com/subject/ejzpmqtx.html