【发布时间】:2015-02-13 11:34:50
【问题描述】:
我有一个包含一些数据的 CSV 文件:
3;13.12.2014;inline;33;434;5434
如何检查行是否以 '\n' 结尾?
我试过使用 getline,但 getline 有 '\n' 作为分隔符。
【问题讨论】:
-
你到底为什么在乎?
我有一个包含一些数据的 CSV 文件:
3;13.12.2014;inline;33;434;5434
如何检查行是否以 '\n' 结尾?
我试过使用 getline,但 getline 有 '\n' 作为分隔符。
【问题讨论】:
这是一种需要检查eof() 的情况。 std::getline 的输入可以由以下三个条件之一终止:文件结束、匹配终止符(将被提取)或尝试提取多个 std::string::max_size() 字符。在实践中,最后一种情况可能永远不会发生;在那之前你会遇到std::bad_alloc。如果终止符已经被提取,那么eof() 仍然是假的,因为文件的结尾不会被看到。如果输入因文件结束而终止,则 eof() 将被设置;如果没有输入其他字符,那么std::failbit 也将被设置。所以条件eof() && !fail() 意味着您已经阅读了最后一行,并且它缺少'\n'。
【讨论】:
谢谢你的回答。 所以,我有建设:
fstream file("sport.csv", fstream::in);
string line;
while(getline(file,line))
{
cout << line << endl;
}
现在,我不知道,我把条件 eof() && !fail() 放在哪里了?
【讨论】: