C ++更新txt文件方法

时间:2014-12-12 08:58:00

标签: c++

我尝试编写代码以在我对其内容进行某些操作后更新某些.txt文件的内容;这是方法。我有2个案例。 1)更新" dir.txt" 2)更新" ext.txt" 取决于param;在void 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

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

1 个答案:

答案 0 :(得分:0)

首先,你应该使用std::string C ++中char*的instad

1。字符串比较

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


2。的if-else

应该是

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

3。更好的格式化

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