C++更新 txt 文件方法

C++ update txt file method

本文关键字:方法 文件 txt 更新 C++      更新时间:2023-10-16

我正在尝试编写代码来更新某些.txt文件的内容,在对它们的内容进行一些操作后;这是方法。我有 2 个案例。1(更新"目录.txt"2(更新"分机.txt"取决于参数;在空白main()我对向量 ext 和 dir 执行操作,现在我想删除文件的所有内容并重写已被修改的向量;我已经有一个有效的函数来读取文件数据并将其写入向量中;

void update(string type){
    vector<string>aux; string file; int nr=0;
    if (type=="dir"){
        for (int i = 0; i < this->dir_no; i++)
            aux.push_back(dir[i]);
        file = "directoare.txt";
        nr=dir_no;}
    else
        if (type == "ext"){
            for (int j = 0; j < ext_no; j++)
                aux.push_back(ext[j]);
            file ="extensii.txt";
            nr = ext_no;
    }
        else 
            return;
    if (f){ 
        f.close();
        f.open(file, std::fstream::out | std::fstream::trunc);
        for (int i = 0; i < nr; i++)
            f << aux[i] << "n";
    }
    else cout << "Couldn't update! error " << endl;
}

问题:代码没有任何编译错误,但每次我在main((函数中调用它时,都会在不编写任何内容的情况下清理文件的内容;我认为这是一个愚蠢的逻辑错误,但此时我一直在寻找几个小时,但我看不到它;顺便说一句,f 是我在课堂上声明的 fstream

谢谢你的帮助。我确实更新了我的代码并开始使用字符串,因为这是人们经常告诉我的事情。我不太习惯,所以这不是我的第一选择。我正在努力改变这一点。无论如何,显然使用字符是问题的一部分。另一个是我在写入文件后没有关闭文件。再次感谢您的帮助

首先,你应该使用std::stringC++char*的Instad

1. 字符串比较

您无法将字符数组与 == 进行比较。您必须改用strcmp()
您可以将operator==std::string一起使用。


2. 如果-否则

应该看起来像

if(...)
{
    //code
}
else if(...)
{
    //code
}
else 
{
    //code
}

3.更好的格式

也许你认为它不是那么重要,但它可以肯定地帮助你进行调试,对于未来的代码读者(包括你(来说,这是一种更好的方式。