私はCで書かれたプログラムに問題があります。+ + C:Bを使ってウィンドウ7で。ここでは、ファイル内の行数を調べるために使用しているコードを示します。最初の部分は、gotoline関数の宣言であり、その後にファイルの行数を数えるコードの部分が続きます。ロギングプロセスを追加するまでは、すべてうまくいきました。たぶん私は間違った情報を記録しているか、1つの関数の中であまりに多くのファイルを開いたり閉じたりして作業していますか?私のエラーを特定するための助けがあれば、大いに感謝しています。私は、私の問題についてさらに詳細な説明や説明をしてくれることを嬉しく思います。私はまだC++を勉強しているので、私のプログラムが行を数えなくなったのはなぜか私はちょっと混乱しています。ファイルの詳細をログに記録してから何が起こったのですか?
std::ifstream& GotoLine(std::ifstream& file, unsigned int num)
{
file.seekg(std::ios::beg);
for(int i=0; i < num - 1; ++i)
{
file.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
}
return file;
}
ifstream productguide;
productguide.open ("MasterProductGuide.csv");
if (productguide.good())
{
c = productguide.get();
if (c=='\n')x++;
ofstream log;
log.open ("log.txt", ofstream::app);
if (log.good())
{
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
string loginfo;
loginfo = asctime (timeinfo);
log << "MarketManager Detected " << x << " # of lines in the Master Product Guide - " + loginfo;
}
else
{
cout << "There was an error creating the log file" << endl;
cout << "The Program will now terminate" << endl;
system("PAUSE");
return 0;
}
log.close();
}
else
{
ofstream log;
log.open ("log.txt", ofstream::app);
if (log.good())
{
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
string loginfo;
loginfo = asctime (timeinfo);
log << "MarketManager Failed to oped the Master Product Guide - " + loginfo;
}
else
{
cout << "There was an error creating the log file" << endl;
cout << "The Program will now terminate" << endl;
system("PAUSE");
return 0;
}
log.close();
cout << "The Program will now terminate" << endl;
system("PAUSE");
return 0;
}
productguide.close();
を返すべきです。このソースファイルのフルバージョンを投稿できますか? –
私は読みやすさのために物事を壊す方法のためにそのほぼ1000行。投稿せずに送信する方がいいですか? – Rob
この2つのコードは私のために見えます。だから私は問題が別の場所にあると思う。 –