我怎么能编辑一个txt文件而不删除的内容在c++?

osh3o9ms  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(118)

我想在一个txt文件中创建一个数据库,并使用seekp()访问和编辑它的某些部分,但当我打开文件写入时,程序创建了一个新文件,删除了以前的文件。

#include <fstream>
#include <iostream>
using namespace std;

int main() {

    ofstream g;
    g.open("text.txt",ios::out);
    if(!g.is_open())
        cout<<"error";
    else {
        g.seekp(2);
        g.write("apple",5);
    }
    g.close();

    return 0;
}
izkcnapc

izkcnapc1#

您需要不同的打开模式。
当涉及到ofstream的行为时,文档相当模糊(出于所有实际目的,您观察到的行为是设计好的:它将被截短)。
请将fstreamios_base::in | ios_base::out | ios_base::binary搭配使用。
除非您使用的是一个字符总是一个、两个或四个字节的编码,否则在文本模式下您将无法一致地执行此操作。此外,在文件尾之前的任何查找位置写入内容都不会将内容移动到当前查找位置之后,它只是被覆盖。因此,为了实现类似数据库的行为,您至少需要某种固定大小的记录或索引数据结构。

相关问题