> -6ren">
gpt4 book ai didi

c++ - 为什么 istringstream 在流的末尾附加 '-1' 字符?

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:07 25 4
gpt4 key购买 nike

我注意到,当我使用 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;因为你在偷看但是,它返回宏 EOF 的值(通常为 -1),这就是您在输出 peek() 时所看到的> 的结果。没有任何内容“附加”到流中。

阅读您使用的函数的文档。

关于c++ - 为什么 istringstream 在流的末尾附加 '-1' 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43770937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com