【发布时间】:2020-08-27 00:53:19
【问题描述】:
我有一个函数可以读取文本文件作为输入并将数据存储在向量中。
只要文本文件不包含任何额外的新行或空格,它就可以工作。
这是我目前拥有的代码:
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 >> pushThis将在没有进一步帮助的情况下为您跳过所有空格,除非您对未显示的流做了一些事情。换句话说,我看不到问题所在。你应该已经得到了你想要的。 -
同意。在
operator>>读完最后一个单词 (mate) 之后,对operator>>的下一次调用将丢弃剩余的空格(包括换行符),直到到达 EOF,使流进入中断循环的状态。只有成功读取的 4 个单词(safemacebaitmate)会被推入向量中。 -
我认为我们误解了您想要的内容,需要一个更好的问题描述,包括minimal reproducible example、输入(已经知道了,谢谢)、输入所需的输出(我认为您也提供了),以及你目前得到的输出。
标签: c++ input output whitespace