使 iostream 更加严格

She*_*rei 1 c++

有没有办法通过一些标志使 iostreams 对布尔值更加严格?

我使用得到了意想不到的结果std::boolalpha

bool var;
std::istringstream is("true1");
is >> std::boolalpha >> var;
Run Code Online (Sandbox Code Playgroud)

产量var == true,is.good() == 1is.peek() == '1', 当我预期时is.good() == 0

当没有指定 boolalpha 时类似的行为:

bool var;
std::istringstream is("1qwe");
is >> var;
Run Code Online (Sandbox Code Playgroud)

产量var == true,is.good() == 1is.peek() == 'q', 当我预期时is.good() == 0

eer*_*ika 6

不,没有办法以这种方式使 iostreams 更加严格。

也没有必要。例如,只需is.peek()检查整个输入是否被消耗即可。如果不是,则将输入视为错误,然后重试(或在情况下您想做的任何事情is.good() == 0)。