私のプログラム内で次のようなループが実行されており、私が受け取っている出力とデザインがどのように関連しているのか分かりません。私のforループが予想よりも多く実行されています
3
DeviceName
GPU
Manufacturer
Intel
GraphicalRam
128MB
これはファイルDEVICELISTループにおいて
DeviceName=GPU
Manufacturer=Intel
GraphicalRam=128MB
ある、no_of_lines
は、この場合、ファイル内の行の数を指す:
cout << no_of_lines << endl;
for (int count = 0; count < no_of_lines + 1; count ++)
{
getline(Device, line, '=');
cout << line << endl;
}
これが出力されます3.この出力は、ループが1行に1回だけ実行されるという検証として提供されています。誰がこのループが予想より多くの時間を実行しているのか教えていただけますか?私はそれがデリミネーターとして=
を含めることが原因であると推測しています。ループが何らかの形で増分前の時間を実行していますが、最後の行でデリミネーターで停止する理由は、限界?
http://www.cplusplusに従って。com/reference/iostream/istream/getline /あなたのコードは 'DeviceList.getline(line、255、 '=');'と読みます。何か不足していますか? – Mikhail
出力がコードと入力と一致しません。あなたが私たちに見せていないことがあります。実行時に問題が示されるというコンパイル可能な例が必要です。私はあなたがこの例を作るときにあなた自身の問題を解決するだろうと確信しています。 –
@Mikhail:いいえ、ストリーム、文字列、セパレータを取るstd :: getline()があります。これはあなたが(通常は)使用するべきものです(あなたのバージョンはバッファのサイズよりも小さい行を必要とし、痛みですそうでない場合は)を参照してください:http://www.cplusplus.com/reference/string/getline/ –