首页 > 解决方案 > 读取输入文件时忽略剩余的换行符和空格(C++)

问题描述

我有一个函数可以读取文本文件作为输入并将数据存储在向量中。

只要文本文件不包含任何额外的新行或空格,它就可以工作。

这是我目前拥有的代码:

std::ifstream dataStream;

dataStream.open(inputFileName, std::ios_base::in);
    
std::string pushThis;
while(dataStream >> pushThis){

    dataVector.push_back(pushThis);

}

例如:

安全的狼牙棒
诱饵

以上作为输入文本文件工作。

这不起作用:

安全的狼牙棒
诱饵


一旦到达文件中的最后一个字符,有什么方法可以停止流,同时仍然通过单词之间的空格保持分隔,以便将它们添加到向量、堆栈等内容中?

即一个向量将包含 ['safe', 'mace', 'bait', 'mate']

标签: c++inputoutputwhitespace

解决方案


回答:

问题来自有两个流,一个使用!dataStream.eof(),另一个使用dataStream >> pushThis.

固定以便两者都使用dataStream >> pushThis.

供我自己和其他可能发现此内容的人将来参考:

eof()除非您想获取文件的结尾位(包括空格),否则不要使用。


推荐阅读