C++ 使用<;将文本输出到文件中的特定行;fstream>;标题

C++ 使用<;将文本输出到文件中的特定行;fstream>;标题,c++,fstream,C++,Fstream,如何使用标题将文本写入文件的特定行?有什么功能可以做到这一点吗?谢谢。您不能这样做,因为您写的行可能比现有的行长。因此,您可能会删除一行或必须重写整个文件 如果行的长度完全相同,则可以进行二进制写入 [编辑:以下行被错误添加,仅适用于.NET] 如果可以,请使用File.ReadAllLines和File.writeallines。如果要在第5行中插入文本: 1-将第5行的内容复制到新文件的文件末尾,并将其复制到缓冲区 然后写下你的台词。(将光标放在5号线的贝宁) 3-然后从另一个文件中复制回行

如何使用
标题将文本写入文件的特定行?有什么功能可以做到这一点吗?谢谢。

您不能这样做,因为您写的行可能比现有的行长。因此,您可能会删除一行或必须重写整个文件

如果行的长度完全相同,则可以进行二进制写入

[编辑:以下行被错误添加,仅适用于.NET]


如果可以,请使用File.ReadAllLines和File.writeallines。

如果要在第5行中插入文本:

1-将第5行的内容复制到新文件的文件末尾,并将其复制到缓冲区

然后写下你的台词。(将光标放在5号线的贝宁)

3-然后从另一个文件中复制回行


或者,更复杂(不使用缓冲区):(与数组中的插入算法相同)

您可以将所有行移到要覆盖的行的上方,以获得您的行的eact spae。然后写下你的台词

例如,您希望在第5行中写入20个字符

首先在文件末尾写入21个字符。(如果有一个功能,移动字符21个字符,我会更容易和完美)

然后放置一个循环,将每个字符替换为-21位置的字符。直到联合国到达5号线。 然后在第5行写下你的台词


可以吗?

代码如下所示:

InputFile.open();
tmpFile.open();

while(InputFile.readline())
{
   if (this is where you want the new line)
   {
        tmpFile.write(newLine);
        if(Want to keep the original line)
        {
            tmpFile.writeLine(oldLine);
        }
   }
   else
   {
        tmpFile.writeLine(oldLine);
   }
}

InputFile.close();
tmpFile.close();
unlink(InputFile);
move tmpFile to InputFile.

不,文件不是这样工作的。你的意思是我只能在文件的末尾添加文本?不,你可以在文件的中间或开头添加文本。检查我的答案。你可以写你自己的函数。。。(不复杂)什么头文件是
file.ReadAllLines
在中定义的?@CodyGray:hahahaha。这让我很开心!Thanks@CodyGray:哦,对不起。我以为你知道,
File::ReadAllLines
是.NET,故意问“什么头文件”来通知作者这个错误。我也是。它只解决了问题的一部分,只是概念上的问题。@eharvest:重新检查我的答案。我将在这里重复我答案的相关部分:“所以你可能会删除一行或重写整个文件。如果所有行的长度都完全相同,你可以进行二进制写入。”如果这让你感到困惑,我很抱歉。