[转]C++使用std::noskipws读取空白字符

如何才能读取输入流的空白字符呢?

在标准的流中,有一个skipws标记,默认是置位的,表明当读取空白字符时,会将它们丢弃。使用std::noskipws操纵符可以清除这个标记:

cin >> std::noskipws;

一个案例:

#include <iostream>
#include <sstream>

int main()
{
        char a, b, c;

        std::istringstream iss("  123");
        iss >> std::skipws >> a >> b >> c;      // 忽略掉前面的空白字符,PS: 默认std::skipws是置位的
        std::cout << a << b << c << std::endl; // 123

        iss.seekg(0);
        iss >> std::noskipws >> a >> b >> c; // 不忽略空白字符,将其读取
        std::cout << a << b << c << std::endl; // ..1

        return 0;
}

参考资料:http://www.cplusplus.com/reference/ios/noskipws/

---------------------
作者:Demon90s
来源:CNBLOGS
原文:https://www.cnblogs.com/demon90s/p/7704502.html
版权声明:本文为作者原创文章,转载请附上博文链接!

猜你喜欢

转载自www.cnblogs.com/shawnchou/p/11368189.html