2017-11-08 6 views
-1

Also ich versuche, ein Programm in C++ zu machen, das die Zeile eines Wortes aus einer Textdatei findet und die Zeilennummer anzeigt. Ich habe keine Fehler beim Kompilieren, aber der Linienwert ist immer eine seltsame Zahl wie 1972007907.Suchen Sie den Wert einer Zeile

Der Code:

#include <iostream> 
#include <fstream> 
#include <string> 

int main() 
{ 

std::ifstream readFile ("example.txt"); 





if(readFile.is_open()) 
{ 
    int line; 
    std::cout << "Write the word you're searching for\n" ; 
    std::string word ; 
    std::cin >> word ; 



    std::string candidate ; 
    while(readFile >> candidate) 
    { 
     line++; 

    } 

    std::cout << "The word " << word << " has been found " << " on line " <<line<<"\n"; 
} 

else 
{ 
    std::cout << "Error! File not found!\n" ; 
    return 1 ; 
} 
} 
+2

'int line = 0;' Sie haben vergessen, es zu initialisieren. Aber es gibt auch andere Probleme. –

+0

Der Code tut nicht, was Sie behaupten, es versucht zu tun. – Elazar

+0

Können Sie auf die Probleme hinweisen und wie kann ich sie lösen? – Stefan

Antwort

1

Teil des Problems ist, dass Ihre Zeilenzähler die Gesamt lesen Anzahl der Zeilen in der Datei, unabhängig davon, ob Sie die von Ihnen gesuchte Zeile gefunden haben. Sie müssen eine Bedingung in der while-Schleife hinzufügen, die aus der Schleife ausbricht, sobald das Wort gefunden wurde. Der Pseudo-Code würde wie folgt aussehen:

while (Readline- aus der Datei)
    if (Wort in Readline- gefunden)
      exit loop

    Inkrementleitung
end while loop

Sie müssten Ihre while-Schleife ändern, um eine Zeile zu lesen:

while(std::getline(readFile, candidate)){ 
    // rest of your logic goes here 
} 
Verwandte Themen