我尝试编写代码以在我对其内容进行某些操作后更新某些.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是问题的一部分。另一个是在写入文件后我没有关闭文件。再次感谢您的帮助
答案 0 :(得分:0)
首先,你应该使用std::string
C ++中char*
的instad
您无法将char数组与==
进行比较。您必须使用strcmp()
您可以将operator==
与std::string
一起使用。
应该是
if(...)
{
//code
}
else if(...)
{
//code
}
else
{
//code
}
也许您认为它并不重要,但它可以确定地帮助您进行调试,这对未来的代码读者(包括您)来说是一种更好的方式