【发布时间】:2018-07-31 10:15:57
【问题描述】:
我编写了一个函数,该函数对从文件中读取的行进行拼写检查,该文件将文件流和分隔符作为参数。我的问题是该函数需要一个分隔符,但是在阅读最后一行时,我没有。我会使用文件的最后一个字符,但我需要最后一个字符来进行拼写检查。
有没有办法使用EOF宏作为分隔符?
【问题讨论】:
-
请发布您的代码,最好是minimal reproducible example。
-
函数“需要分隔符”是什么意思?这是 C++,所以大概你使用的是
std::string,所以字符串的结尾非常适合作为“结束”指示符。 -
那么,您重新发明了
std::getline并增加了一些拼写检查?如果是这样,我会努力模仿它的行为。当在分隔符之前遇到流结束时,所消耗的都是“行”。 IE。最后的分隔符是可选的。存在最终分隔符的情况,遇到 then end-of-stream 通常比您引用的情况更成问题。 -
我会说不。返回 EOF 值的函数返回的是
int类型,而不是char。 -
您的问题是您未公开的函数未正确编写。您不需要通过添加所谓的“EOF 分隔符”来使事情进一步复杂化。你只需要修复你的代码。有很多现有的方法可以正确读取行,包括未终止的最终行。无需重新发明轮子。
标签: c++ io filestream spell-checking