【发布时间】:2016-08-17 16:21:41
【问题描述】:
如何检查文件的最后一行是否包含“\n”(或换行符)。
这里有两个例子: a file with newline at the end - a file without newline at the end
我当前的代码:
fstream file("filename");
string line;
if (!file.is_open()) throw Exception();
while(getline(file, line))
{
(checking for lastline)
}
我意识到 getline 不会包含 new_line 字符。我可以遍历每个字符,但是会出现性能问题。有几百万个字符的文件,我不知道如何去最后一行获取 new_line 字符。
--- 编辑 ---
- 也许我忘了提到我的环境仅是 UNIX。所以我会 仅使用 end_line 字符 '\n'。
- 其次,我需要 getline 来检查每一行是否存在一些错误(但在这里不相关)。
- 如果文件无效,我将在 while 循环之前检查我的最后一行,以便我可以啜饮它!
- 我的图像显示 CR LF,这是我的错误。为错误道歉。应该只有 LF。
【问题讨论】:
-
怎么样,求到底?请注意,对于文本模式,搜索通常非常 UB,因此请在二进制模式下进行,或检查是否支持它的详细信息。
-
"'\n'(或换行符)" 听起来是一个非常不精确的要求。你真正想达到什么目标?
标签: c++ file newline eof getline