2012-06-21 59 views
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

我認爲最少的編程知識是需要在這個網站.. – Griwes

+2

你想要一條線,但是你每次循環並得到一條線?如果你這樣做,儘管如此, 'while(getline(f,s))'。 – chris

+0

一個有用的建議:C++是英文的,所以評論也應該用那種語言...... –

回答

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. 
} 
+0

所以任何人都有任何ideeas? –

+0

請參閱我的編輯。 –

+0

非常感謝你<3 –