逐行读取txt
Posted
技术标签:
【中文标题】逐行读取txt【英文标题】:Reading txt line by line 【发布时间】:2012-02-16 12:48:51 【问题描述】:我正在用 C++ 逐行读取文本文件。我正在使用此代码:
while (inFile)
getline(inFile,oneLine);
这是一个文本文件:
-------
This file is a test to see
how we can reverse the words
on one line.
Let's see how it works.
Here's a long one with a quote from The Autumn of the Patriarch. Let's see if I can say it all in one breath and if your program can read it all at once:
Another line at the end just to test.
-------
问题是我只能阅读以“这是一个很长的等等......”开头的段落,并且它“立即停止:” 我无法解决阅读所有文本的问题。你有什么建议吗?
【问题讨论】:
您知道每次读取一行时都会覆盖oneLine
的内容,因此在while 循环终止后oneLine
中的唯一内容是最后一行。
你并没有真正包含太多代码......
【参考方案1】:
正确的读行成语是:
std::ifstream infile("thefile.txt");
for (std::string line; std::getline(infile, line); )
// process "line"
或者不喜欢for
循环的人的替代方案:
std::string line;
while (std::getline(infile, line))
// process "line"
请注意,即使文件无法打开,这也会按预期工作,但如果您想针对该情况生成专用诊断,您可能需要在顶部添加额外的检查 if (infile)
。
【讨论】:
我真希望这是地球上每一本 C++ 书籍(面向初学者)的第一页。 @AndréCaron:这是我“经常粘贴的答案”文件中的第一个条目,如果这是任何安慰的话。 哈哈哈“经常粘贴的答案”!我会记住那个的! @KerrekSB:这使得它成为一个很好的候选人,可以作为完全重复的投票结束。不幸的是,似乎没有包含此规范 SO 答案的规范 SO 问题。 @KenBloom:肯定已经有一千个了......真的,SO应该有一种机制来创建或标记现有问题为规范,但就目前而言,大多数问题都是公平的晦涩难懂,而答案总是一样的......以上是关于逐行读取txt的主要内容,如果未能解决你的问题,请参考以下文章