提问人:Armen Tsirunyan 提问时间:3/20/2019 更新时间:3/21/2019 访问量:517
检查是否为输入流设置了 skipws/noskipws 标志
Check if skipws/noskipws flag is set for an input stream
问:
为了设置(或)标志,需要编写:std::skipws
std::noskipws
my_input_stream >> std::skipws; //or my_input_stream >> std::noskipws;
但是我如何检查是否设置了标志?我需要为我的启用,但我想在之后恢复之前设置的值。我知道升压 I/O 状态保护程序,但我需要为学生做一个演示,对于这个简单的目的,使用升压可能有点矫枉过正。noskipws
operator >>
答:
6赞
Quentin
3/20/2019
#1
您正在寻找 std::ios_base::flags()
:)
评论
0赞
Armen Tsirunyan
3/20/2019
啊,对。既然你说了,它就开始敲响了警钟。当我多年前第一次开始学习 C++ 时,我记得我曾经设置过这样的任何 iostream 标志。后来,我开始使用标准机械手,不知何故忘记了这一点。谢谢你:)
3赞
user6556709
3/20/2019
#2
您必须使用流的标志:
my_input_stream.flags() & std::ios_base::skipws
4赞
NathanOliver
3/20/2019
#3
您需要使用 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";
}
评论