为了设置 std::skipws
(或 std::noskipws
)标志,需要写入:
my_input_stream >> std::skipws; //or my_input_stream >> std::noskipws;
但是,如果设置了标志,则如何检查?我需要为我的operator >>
启用noskipws
,但是我想在以后还原以前设置的值。我知道I/O州储蓄者的提升,但是我需要为学生进行示范,并且使用Boost可能是为了这个简单的目的而过于谋杀。
您正在寻找std::ios_base::flags()
:)
您需要使用flags()
成员函数。这将返回当前标志,您可以测试是否设置了std::ios_base::skipws
标志,因此可以:
int main()
{
std::cin >> std::noskipws;
if (!(std::cin.flags() & std::ios_base::skipws))
std::cout << "no skipws setn";
std::cin >> std::skipws;
if (std::cin.flags() & std::ios_base::skipws)
std::cout << "skipws set";
}
您必须使用流的标志:
my_input_stream.flags() & std::ios_base::skipws