为什么 istringstream 在流的末尾附加'-1'字符?
Why istringstream appends '-1' character at the end of stream?
我注意到,即使整个字符串被"消耗"即使我使用istringstream eof((也不会返回true。例如:
char ch;
istringstream ss{ "0" };
ss >> ch;
cout << ss.peek() << " " << (ss.eof() ? "true" : "false");
输出(VS2015(:
-1 false
eof()
不应在消耗所有数据时返回true
。当您尝试读取数据数据时,它应该返回true
。
在此示例中,您永远不会做。
特别是,peek
是一个"请求",即使没有剩下的阅读,也不会设置EOF。因为你好吧,偷看。但是,它 will 返回宏EOF
(通常为-1(的值,这是输出peek()
的结果时所看到的。没有"附加"流到流。
阅读您使用的功能的文档。
std::istream::peek
peek下一个字符返回输入序列中的下一个字符, 不提取它:字符是下一个字符 从流中提取。
如果已经在通话之前设置了任何内部状态标志或已设置 在呼叫期间,函数返回文件终止值(EOF(。
http://www.cplusplus.com/reference/istream/istream/ppeek/
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 有没有办法我可以从 istringstream 中读取两个字符
- 为什么 istringstream 在流的末尾附加'-1'字符?
- 从 istringstream 读取字符时出现意外行为
- C++使用istringstream将int读取为无符号字符
- 使用istringstream丢失随机字符
- 从 istringstream 中读取行,末尾没有'r'字符