【发布时间】:2017-07-20 16:26:29
【问题描述】:
考虑这段代码:
int xx;
std::cin >> std::setfill('0') >> std::setw(4) >> xx;
将12 发送到标准输入时,我希望xx 的值是1200,而在发送12345 时,我希望它是1234。
但是,std::setfill 和 std::setw 似乎没有效果,我分别得到了 12 和 12345。
这是一个错误还是符合标准?有没有获得预期功能的好方法?
另外请注意,当我将xx 的类型更改为std::string 时,std::setw 会生效,而std::setfill 仍然不会。
我的编译器是gcc-7.0.1。
【问题讨论】:
-
也许我错过了。 input 流操作从什么时候开始支持
std::setfill?我知道std::setw是,但现在std::setfill也是??? -
不,这是格式错误的代码。
-
我认为输入流不支持
std::setfill。 en.cppreference.com/w/cpp/io/manip/setfill -
xx 将接收您输入的任何值。你需要展示你之后用它做了什么,并且可以格式化
-
上述代码编译的事实使拥有所需功能的动机合法化。
标签: c++ parsing integer istream setw