我有从目录中读取文本文件的问题。
这是我的代码示例部分。 (如果你想我可以上传整个代码)
ifstream file;
// Get Total Number of Lines from a sample text file
file.open(globLabel0.gl_pathv[0]);
for (int i = 0; getline(file, line); ++i)
columnSize++;
if(file.is_open())
file.close();
float trainingData[trainingDataRowSize][columnSize];
float testData[testDataRowSize][columnSize];
// Define Counters for Loading Samples
int columnCount=0;
int rowCount=0;
int histVal=0;
// Load Label0 Samples to Training Data
for(unsigned int i=0;i<globLabel0.gl_pathc;i++){
file.open(globLabel0.gl_pathv[i]);
while(file >> histVal){
trainingData[i][columnCount]=(histVal);
columnCount++;
}
file.close();
rowCount=i;
columnCount=0;
}
让我一步一步告诉你代码:
1st:我初始化了我的ifstream对象。
ifstream file;
第二:我将所有文本文件存储在globLabel0对象中,并且globLabel0初始化如下:
glob_t globLabel0;
然后我将所有文本文件存储在目录中,如下所示:
glob(trainLabel0.c_str(),GLOB_TILDE,NULL,&globLabel0);
我绝对知道globLabel0有5923个文本文件,我在调试过程中看到过。
然后我尝试打开第一个文本文件,如下所示
file.open(globLabel0.gl_pathv[0]);
第3名:找到columnSize后。我关闭了我的文件对象。
file.close();
第四:这是我的问题,当我尝试在循环中打开文件
时 for(unsigned int i=0;i<globLabel0.gl_pathc;i++){
file.open(globLabel0.gl_pathv[i]); // Problem Here
我有以下错误:
如果可能的话,请你告诉我哪里弄错了?
答案 0 :(得分:0)
您正在使用相同的输入流来打开多个文件,这导致只有第一个文件被正确打开,因此您可以在打开文件后关闭内部然后打开下一个文件,依此类推:
// after any read of a file if you want to open another file then clse the file to save and clear its buffer then open the next...
file.close();
file.clear();
for(unsigned int i=0;i<globLabel0.gl_pathc;i++){
file.open(globLabel0.gl_pathv[i]);
// read data to an array or vector or list...
while(file >> histVal){
trainingData[i][columnCount]=(histVal);
columnCount++;
file.close();
file.clear(); // it is also important
}