如何只从文件中读取一行

时间:2012-06-21 14:38:57

标签: c++ visual-c++ c++11

我试图读取文件的第一行,但是当我尝试将文本保存到文件中时,它会打印出整个文件,而不仅仅是一行。该工具也照看休息或空格。

我正在使用以下代码:

//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();

1 个答案:

答案 0 :(得分:2)

摆脱你的while循环。替换这个:

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

见到这个:

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

<小时/> 编辑:响应新要求“它读取了我可以在第二个变量中定义的行吗?”

为此,你需要循环,依次阅读每一行,直到你读到你关心的那一行:

// 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.
}