要设置std::skipws
(或std::noskipws
)标志,需要编写:
my_input_stream >> std::skipws; //or my_input_stream >> std::noskipws;
但是,如果设置了标志,如何检查?我需要为noskipws
启用operator >>
,但是之后要恢复先前设置的值。我知道boost的I / O状态保护程序,但是我需要为学生做一个演示,使用boost可能太简单了。
答案 0 :(得分:4)
您正在寻找std::ios_base::flags()
:)
答案 1 :(得分:2)
您必须使用流中的标志:
my_input_stream.flags() & std::ios_base::skipws
答案 2 :(得分:2)
您需要使用flags()
成员函数。这将返回当前标志,您可以测试是否设置了std::ios_base::skipws
标志,如下所示:
int main()
{
std::cin >> std::noskipws;
if (!(std::cin.flags() & std::ios_base::skipws))
std::cout << "no skipws set\n";
std::cin >> std::skipws;
if (std::cin.flags() & std::ios_base::skipws)
std::cout << "skipws set";
}