0 c++ stream char visual-c++ istringstream
我注意到当我使用istringstream时eof()即使整个字符串被"消耗"也不会返回true.例如:
char ch;
istringstream ss{ "0" };
ss >> ch;
cout << ss.peek() << " " << (ss.eof() ? "true" : "false");
Run Code Online (Sandbox Code Playgroud)
输出(VS2015):
-1 false
Run Code Online (Sandbox Code Playgroud)
eof()
true
在消耗所有数据时不应该返回.它应该返回true
,当你尝试读取更多的数据比可用.
在这个例子中,你永远不会这样做.
特别是,peek
是一个"请求",即使没有任何东西可以阅读,也不会设置EOF; 因为你好,偷看.然而,它会返回宏的值EOF
(通常-1),这是你所看到的,当你输出peek()
的结果.没有任何内容"附加"到流.
阅读您使用的功能的文档.