【发布时间】:2011-12-26 15:53:25
【问题描述】:
我正在使用getline 从输入文件中获取缓冲区中的字符。读完一行后,我遍历所有字符并在地图上进行查找(以进行一些进一步的操作)。
问题是一旦有效字符结束,我的程序就会从输入流中获取 eof 并尝试在地图中查找它。
我尝试检查inputStream.eof() 或eofbit,看看我何时到达流的末尾,但问题是这两个都在我完成最后的getline() 后立即设置,所以我可以' t 使用它来确定 EOF 字符在输入缓冲区中的位置。
如何识别输入缓冲区中的 EOF 字符并避免在地图中查找它?
while(fileInput) {
fileInput.getline(charBuf,charBufSize);
for(int i=0; i<=charBufSize ;i++) {
char* currentChar = &(charBuf[i]);
// do something with currentChar,
// which I proceed to do by dereferencing currentChar when I need to access
// the actual character.
}
}
【问题讨论】:
-
您似乎忽略了发布一些显示您遇到的问题的代码。
-
当我发布代码时,人们会诉诸“你为什么要发布这么多代码”,而我却不这样做:)
-
没有“eof 字符”之类的东西(除了某些上下文中 Windows 中的 SUB 控制代码),这确实需要一些代码来说明您如何解释该概念。
-
@angry - 我相信是这样,因为您使用 getline 而不检查它是否有效。这就是另一个问题的意义——在 尝试读取之后检查 eof,而不是之前。