gpt4 book ai didi

c++ - 如何在不使用 ios::app 标志的情况下使用 C++ 中的 seekg 和 seekp 附加到文件

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:53 25 4
gpt4 key购买 nike

我在使用 seekp 和 seekg 函数时没有得到正确的输出,而另一方面,当我使用 ios::app 进行追加时,程序运行良好。我应该如何使用 seekg() 和 seekp() 函数在文件上追加?

#include<iostream.h>
#include<conio.h>
#include<fstream.h>
void main()
{ clrscr();

ofstream out;
out.open("MJ");
char data[100];
cout<<"\nEnter data: ";
cin.getline(data,100);
out<<data;
out.close();
ifstream in;
in.open("MJ");

in>>data;
cout<<data;

in.close();


out.open("MJ");

cout<<"\nEnter data: ";
cin.getline(data,100);
out.seekp(2);
out<<data;

out.close();

in.open("MJ");
in>>data;
cout<<data<<endl;


getch();

}

最佳答案

当您执行 out.seekp(2) 时,您只会在文件中查找两个 字节,然后覆盖超出该字节的任何内容,但这不是问题所在。

问题是当您重新打开文件时旧内容被破坏,文件被截断。您需要在 open | 中打开文件在 模式下不破坏内容,如果你想手动搜索到结尾:

out.open("MJ", ios::out | ios::in);

可以在 ios::in 模式下打开“输出”流。

参见例如this reference它有一个很好的模式表以及它们的作用和含义。

关于c++ - 如何在不使用 ios::app 标志的情况下使用 C++ 中的 seekg 和 seekp 附加到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36418328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com