【发布时间】:2016-05-25 00:05:06
【问题描述】:
所以我正在读取包含以下内容的输入文件:
lololololololol
我需要一次使用二进制一个字节来读取它,以便稍后做一些事情。为此,我使用get() 读取它,然后将其存储到一个字符中。除了它读入的最后一个字符外,它似乎工作正常。它正在读入的向量包含:
lololololololol
�
我不太确定最后一个值是什么,但它完全抛弃了我的最终输出。所以我的问题是,get() 是否有理由从我的文本文档中读取不存在的值或字节?还是在阅读我不知道的内容?
代码:
while(istr.good()) {
temp = istr.get();
input.push_back(temp);
}
【问题讨论】:
-
get在到达文件末尾时返回EOF。good在此之前不会报告文件结束。所以神秘的字符就是EOF标记。 -
@JonathanPotter 请不要在 cmets 中回答。
-
为什么
while (stream is good) { read from stream; use data }是错误的教科书示例。直到 在 您尝试读取缓冲区末尾之后,该流才会变得不好。.good()不告诉未来。
标签: c++ file vector while-loop istream