【发布时间】:2016-11-22 23:21:04
【问题描述】:
我正在尝试编写一个代码,该代码将更改文件中的一个给定单词,并将其更改为另一个单词。该程序以一种逐字复制的方式工作,如果它是普通单词,它只是将其写入输出文件,如果它是我需要更改的那个,它会写入我需要更改的那个。但是,我遇到了一个问题。程序没有将空格放在输入文件中的位置。我不知道这个问题的解决方案,我不知道我是否可以使用noskipws,因为我不知道文件在哪里结束。
请记住,我是一个完全的新手,我不知道事情是如何运作的。不知道标签够不够显眼,再提一下我用的是C++
【问题讨论】:
-
查看输入修饰符
noskipws。 -
显然,您确实知道何时到达文件末尾:尝试读取另一个字符或单词失败。
-
当我使用“noskipws”时,“eof()”不起作用。但我想我不应该用它来检查文件是否已经结束
-
eof()无论如何都不是确定文件结尾的方法:您检查流状态,即您尝试读取然后检查流的状态,例如,通过转换它为布尔值,例如,while (stream >> value) { ... }。当然,std::ios_base::noskipws设置时,你需要读取单词之间的空格字符。