有没有办法通过一些标志使 iostreams 对布尔值更加严格?
我使用得到了意想不到的结果std::boolalpha
bool var;
std::istringstream is("true1");
is >> std::boolalpha >> var;
Run Code Online (Sandbox Code Playgroud)
产量var == true,is.good() == 1和is.peek() == '1', 当我预期时is.good() == 0。
当没有指定 boolalpha 时类似的行为:
bool var;
std::istringstream is("1qwe");
is >> var;
Run Code Online (Sandbox Code Playgroud)
产量var == true,is.good() == 1和is.peek() == 'q', 当我预期时is.good() == 0。
不,没有办法以这种方式使 iostreams 更加严格。
也没有必要。例如,只需is.peek()检查整个输入是否被消耗即可。如果不是,则将输入视为错误,然后重试(或在情况下您想做的任何事情is.good() == 0)。
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |