我正在将文本从一个文件复制到另一个文件,并进行了一些更改。
我有input.txt,tmp.txt和output.txt。
想法是将几行复制到tmp.txt(直到我们到达分隔符),将文本从tmp.txt移动到output.txt,擦除tmp.txt然后继续循环直到我们到达结尾input.txt。
我在使用tmp.txt文件时遇到问题。在我第一次复制内容后,即使我关闭,删除并重新打开文件进行写入,也会停止接受新文本。我的代码变得非常混乱。
有人能建议一个巧妙的方法吗? (应对tmp.txt,从tmp.txt复制,擦除tmp.txt继续循环)
N.b。这是一个关于家庭作业问题的子任务 - 我正在从文本文件中删除c ++注释。
编辑:对于任何想知道我为什么需要tmp.txt的人:如果程序遇到*/
(关闭评论)而没有打开评论那么它将需要处理它之前的所有内容,直到上一个评论为止,评论。我正在使用temp来保存可能或可能不是评论的文本。如果是 - 我将删除tmp中的文本,如果没有,我将把tmp中的文本复制到output.txt。
答案 0 :(得分:2)
将input.txt作为istream打开,将output.txt作为ostream打开。从输入开始读取回显所有不属于评论的字符。遇到注释时,请勿写入输出。应该这样做。
答案 1 :(得分:1)
如果你正在使用C ++ fstream的东西,你可能必须在重新打开时调用流上的.clear()以清除错误标记(例如当你点击EOF时设置的那些)。
答案 2 :(得分:1)
我建议你跳过tmp.txt文件。应该足以打开input.txt,只需将数据随机播放到output.txt中即可。
答案 3 :(得分:0)
除非你的功课是实际删除评论的一部分,否则我会建议一些简单的脚本。 Here is a reference to a sed
script
如果家庭作业涉及删除评论,您可以将输入文件作为流运行,并在评论中停止写入输出文件。
start
和end
的评论开始,
//
,C ++样式#if 0
和#endif
块 - 只是为了踢: - )