C++更新 txt 文件方法
C++ update txt file method
我正在尝试编写代码来更新某些.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::string
C++char*
的Instad
1. 字符串比较
您无法将字符数组与 ==
进行比较。您必须改用strcmp()
。
您可以将operator==
与std::string
一起使用。
2. 如果-否则
应该看起来像
if(...)
{
//code
}
else if(...)
{
//code
}
else
{
//code
}
3.更好的格式
也许你认为它不是那么重要,但它可以肯定地帮助你进行调试,对于未来的代码读者(包括你(来说,这是一种更好的方式。
相关文章:
- 如何使用curlpp通过POST方法上传文件和json数据
- 一种在C++中读取TXT配置文件的简单方法
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 在C++中包含原型文件的正确方法是什么?
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 不带预处理器的调用方法/文件的文件名/行号
- 引用文件的适当方法是什么?
- 在文件中写入而不是在 c++ 中使用 "<<" 的替代方法?
- 查找定义我的 C/C++ 函数/宏的文件比'grep'更简单的方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- C++:std::ofstream 方法 open() 在第二次迭代时擦除打开的 ifstream 文件
- 如何使用 C/C++ 和 system() 系统调用以外的其他方法在 Linux 中获取文件功能?
- 创建进行生产构建并创建调试信息的C++生成文件的最佳方法?
- 是否有正确的方法对生成文件中的对象文件使用模板命令?(C++)
- 将位字符串转储到二进制文件的最佳方法是什么
- 在目录中查找所有.cpp.h文件(include,src等)的传统方法
- 通过boost asio iostream下载大文件的最快方法是什么?
- LNK2019 在文件中调用静态成员的方法时出错.cpp
- 在 *.cpp 文件中实现的 c++ 函数/方法永远不会内联扩展吗?