私のディレクトリからテキストファイルを読み取る際に問題があります。C++ ifstreamでtxtファイルを読み取ることができないセグメンテーションフォルトエラー
ここは私のコードサンプルの一部です。 (あなたは私が全体のコードをアップロードすることができますしたい場合)
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;
}
私はステップであなたのコードのステップを教えてみましょう:
第一:私は私はifstreamオブジェクトを初期化します。
ifstream file;
第二:私はglobLabel0オブジェクト内のすべての私のテキストファイルを保存し、globLabel0は次のように初期化されます。
glob_t globLabel0;
その後、私は次のようにディレクトリ内のすべてのテキストファイルを格納します。
glob(trainLabel0.c_str(),GLOB_TILDE,NULL,&globLabel0);
私はglobLabel0が5923のテキストファイルを持っていることを間違いなく知っています。
は、その後、私は従う
file.open(globLabel0.gl_pathv[0]);
第三として、第一のテキストファイルを開こうとしました:ColumnSizeがを見つけた後。私はファイルオブジェクトを閉じた。
第四file.close();
:、
可能な場合、あなたはできます:ここで私は
for(unsigned int i=0;i<globLabel0.gl_pathc;i++){
file.open(globLabel0.gl_pathv[i]); // Problem Here
forループ内でファイルを開こうとすると、私は次のエラーを持って、私の問題です私が間違っていた場所を教えてください。
あなたが持っていると思うほど多くのglobLabel0.gl_pathvのメンバーがいないようです。 –
いいえ、コード全体をアップロードしないでください。 [mcve]をアップロードします。 –
@ JonathanMee "globLabel0.gl_pathvのメンバーがあまりありません" globLabel0オブジェクトが空であるかどうかを確認するには、5923個のテキストファイルがあります。ここからリンクから見ることができます:https://www.mediafire.com/?d883fgma1r4xp8x –