オンラインでブラウジングしても解決できなかった小さな C++ の問題があります。これが私のコードです(抽出):
if(File.is_open()) {
while(!File.eof()) {
i++;
getline(File,Line);
if(i>=2) { //Skip Headers
int CharCount=0;
for(int CharPosition=0; CharPosition<Line.size(); CharPosition++) {
if(Line[CharPosition]==',') {
Length=CharPosition;
break;
}
}
NameText=Line.substr(0,Length);
Path= Path_Folder + "\\" + NameText + ".csv";
if(!CheckExistance(Path.c_str())) {
fstream Text_File;
}
Text_File.open(Path, fstream::in | fstream::out | fstream::app);
Text_File<<Line<<"\n";
Text_File.close();
}
}
}
Text_File
このコードは正常に動作していますが、while ループに入るたびに閉じるという事実を変更したいと思います。
基本的に、このプログラムは大きな入力ファイルを多数の小さなファイルに分割します。私の小さなファイルがどんどん大きくなるにつれて、実行はどんどん遅くなります(通常)。私の目標は、すべての小さなファイル ( Text_File
) をこの while ループで開き、fstream ポインター (ポインター?) を別のものに切り替えることです。
私は次のように変更しようとしました:
...
NameText=Line.substr(0,Length);
Path= Path_Folder + "\\" + NameText + ".csv";
if(!CheckExistance(Path.c_str())) {
fstream Text_File;
}
if(!Text_File.open()) {
Text_File.open(Path, fstream::in |fstream::out | fstream::app);
}
Text_File<<Line<<"\n";
\\Text_File.close();
...
Text_File
しかし、何があっても同じように取り組んでいNameText
ます。Text_File
したがって、fstream のポインターは変更されないと推測しています。私は何をする必要がありますか?ポインタを休ませますか?どのように?
皆さん、ありがとうございました!
関連性があるかどうかはわかりませんが、Microsoft Visual C++ 2010 Express を使用しています。また、私は教育も生活もプログラマーではないので、高度な言葉を使わずに説明していただければ幸いです。