c++ - 读取目录中的多个文件进行编辑和写入另一组文件
问题描述
我是 C++ 的新手,如果有人可以帮助我解决这个问题,我将不胜感激。我编写了以下代码,它工作正常,但我需要对同一目录中的许多文件重复它。它逐行读取 0.txt,如果找到,则删除字符串行,并将其余仅是数字的行写入另一个名为 0.dat 的文件中。我需要对同一目录中的多个文件(0.txt,1.txt....100.txt)重复此操作。
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::ifstream in;
std::ofstream out;
in.open("0.txt");
out.open("0.dat");
if(in.is_open() && out.is_open()){
while(std::getline(in, line)){
if(line.find(" No.")==line.npos){
out << line << "\n";
std::cout << "line is:\t" << line<<"\n";
}
}
}
in.close();
out.close();
return 0;
}
如何创建一个循环来读取 100 个“ .txt”文件并将它们写入具有正确名称引用的 100 个“.dat”文件?
解决方案
这很简单,真的。我们要做的第一件事就是把你已经写好的东西变成一个函数。但不是在进行一些编辑之前。它应该和你的代码做的完全一样,但是有更好的实践!
void readAndWrite(std::string in_name, std::string out_name)
{
std::ifstream in{in_name};
std::ofstream out{out_name};
std::string line;
if (!in.is_open() || !out.is_open())
return;
while (std::getline(in, line)) {
if (line.find(" No.") == line.npos) {
out << line << "\n";
std::cout << "line is:\t" << line<<"\n";
}
}
}
然后我们只需要用我们的文件名调用它 100 次。我假设你的文件被命名为“0.txt”、“1.txt”……等等。我们可以使用 来做到这一点std::to_string()
,顾名思义,该函数将事物更改为std::string
s。在我们的例子中,我们会将 s 更改int
为std::string
s。这是一种方法。(这将在main
):
#include <string>
...
for (int i = 0; i < 100; ++i) {
std::string fname = std::to_string(i);
readAndWrite(fname + ".txt", fname + ".dat");
}
那应该这样做!
推荐阅读
- visual-studio-code - 如何更改特定语言的评论样式
- coq - 在 Coq 中使用 Program 定义时,Obligations 中缺少信息的问题
- python - 熊猫有没有办法根据一列中的数量对数据框中的行进行分组?
- parsing - 从 github 运行脚本
- ios - React Native - 具有原生组件依赖的自定义原生组件模块
- java - 在 Java 中流式传输可选嵌套列表的最有效方法是什么?
- java - Spring Boot 计数并保存在 Json 中
- python - aws cli 可以列出,但 boto3 不能
- c# - 如何模拟测试这个 ViewModel ,因为它的 null 总是抛出异常
- sql - 尝试在 SQL Server 中查找部分匹配的字符串