2

ファイルの最初の行を読み込もうとしましたが、ファイルに保存されているテキストを渡そうとすると、1行だけでなくファイル全体が出力されます。ツールはまた、休憩やスペースの世話をしていません。

私は次のコードを使用しています:

//Vocabel.dat wird eingelesen
ifstream f;                         // Datei-Handle
string s;

f.open("Vocabeln.dat", ios::in);    // Öffne Datei aus Parameter
while (!f.eof())                    // Solange noch Daten vorliegen
{
    getline(f, s);                  // Lese eine Zeile
    cout << s;
}

f.close();                          // Datei wieder schließen
getchar();
4

1 に答える 1

2

あなたのwhileループを取り除きます。これを置き換えます:

  while (!f.eof())                    // Solange noch Daten vorliegen
  {
    getline(f, s);                  // Lese eine Zeile
    cout << s;
  }

これで:

  if(getline(f, s))
    cout << s;


編集:「2番目の変数で定義できる行を読み取る」という新しい要件に対応していますか?

そのためには、関心のある行を読み取るまで、ループして各行を順番に読み取る必要があります。

// int the_line_I_care_about;  // holds the line number you are searching for
int current_line = 0;          // 0-based. First line is "0", second is "1", etc.
while( std::getline(f,s) )     // NEVER say 'f.eof()' as a loop condition
{
  if(current_line == the_line_I_care_about) {
    // We have reached our target line
    std::cout << s;            // Display the target line
    break;                     // Exit loop so we only print ONE line, not many
  }
  current_line++;              // We haven't found our line yet, so repeat.
}
于 2012-06-21T15:09:25.490 に答える