C++ - 按顺序打开文本文件
C++ - Opening text files sequentially
我有数百个按编号排序的.txt文件:1.txt、2.txt、3.txt,...n.txt. 在每个文件中,有两列带有十进制数字。我编写了一个算法,可以单独对一个.txt文件执行一些操作,现在我想递归地对所有文件执行相同的操作。这个有用的问题让我对我想做什么有所了解。现在我正在尝试编写一个算法来读取所有文件:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
int i, n;
char filename[6];
double column1[100], column2[100];
for (n=1;n=200;n++)
{
sprintf(filename, "%d.txt", n);
ifstream datafile;
datafile.open(filename);
for (i=0;i<100;i++)
{
datafile >> column1[i] >> column2[i];
cout << column1[i] << column2[i];
}
datafile.close();
}
return 0;
}
我认为代码正在做什么:它创建从 1.txt 到 200.txt 的字符串名称,然后打开具有这些名称的文件。对于每个文件,前 100 列将关联到数组 column1 和 column2,然后值将显示在屏幕上。编译时我没有收到任何错误,但是当我运行它时,输出很大,根本不会停止。如果我将输出设置为.txt文件,它很容易达到一些 Gb!我还尝试减少循环数并减少列数(到 3 左右),但我直到得到无限的输出。如果有人能指出我在代码中犯的错误,我会很高兴......我正在使用 gcc 5.2.1 和 Linux。谢谢!
- 6 元素数组太短,无法存储
"200.txt"
。它必须至少为 8 个元素。 - 条件
n=200
是错误的,并且总是正确的。应该是n<=200
.
如果你的所有文件都在同一个目录中,你也可以使用 boost::filesystem
,例如:
auto path = "path/to/folder";
std::for_each(boost::filesystem::directory_iterator{path},
boost::filesystem::directory_iterator{},
[](boost::filesystem::directory_entry file){
// test if file is of the correct type
// do sth with file
});
我认为这是一个更干净的解决方案。
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 已修改的LinkedList未在文本文件本身中更新
- C++文本文件的获取线
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 打印逐行存储的文本文件
- C++文本文件输入