c++ - 读取输入文件时忽略剩余的换行符和空格(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']
解决方案
回答:
问题来自有两个流,一个使用!dataStream.eof()
,另一个使用dataStream >> pushThis
.
固定以便两者都使用dataStream >> pushThis
.
供我自己和其他可能发现此内容的人将来参考:
eof()
除非您想获取文件的结尾位(包括空格),否则不要使用。
推荐阅读
- r - 根据在另一列中找到的数字将数据框列中的值相乘
- .htaccess - htacces 2 变量问题
- git - 什么 git 命令将基于特定的其他分支创建一个功能分支,而不是在本地,而是在 Atlassian Bitbucket 上?
- html - Navbar Collapse with Brand 不会让我将链接居中
- python - 在基本的 Python 列表理解中使用“或”运算符
- typescript - 如何在接口的每个字段中添加“| null”?
- python - 我将如何使用 python 制作一个“安全”的 .exe 文件?
- java - 接口中的默认方法与扩展实用程序类
- tcpdump - Ubuntu 20.04 中 tcpdump 的权限问题
- c# - 如何将 IGroupedObservable 转换为 IGrouping?