Ich habe eine Zuweisung, wo ich eine Funktion erstellen muss, die einen Dateinamen als Parameter akzeptiert, die Datei öffnet, einen Benutzer auffordert, einen Wert einzugeben, nach dem gesucht werden soll Durchsucht die Datei nach diesem Wert. Die Datei, die mir für diese Aufgabe zur Verfügung gestellt wurde, ist eine Datei mit einer Liste von Einnahmen- und Ausgabenwerten. Ich habe fast alles probiert und empfange immer noch die Eingabeaufforderung "Wert nicht gefunden", auch wenn ich einen Wert eintrage, von dem ich weiß, dass er sich in der Datei befindet.C++ Funktion zum Suchen nach einem numerischen Wert in einer Datei
Der Code ist
void numberSearch(string fileName)
{
string searchVal;
cout << "\nWhat value would you like to search for?\n";
cin.ignore();
getline(cin, searchVal);
ifstream file; //create input file object that will be read from
file.open(fileName); //"ifstream file (fileName)"
if (!file)
{
cout << "\nUnable to open file.\n";
exit(1);
}
string words;
int curLine = 0; //file line counter
while (getline(file, words))
{
++curLine; //counts each line in the file
if (words.find(searchVal) != string::npos)
{
cout << "\nLine " << curLine << " contains " << searchVal << endl;
file.close();
return;
}
else
{
cout << "\nThe value " << searchVal << " was not found.\n";
file.close();
return;
}
}
}
Jede Hilfe sehr
geschätzt
wenn searchval ist nicht in string, es wird wieder enthält? (! = anstelle von ==) – Charlie
Wenn searchval in string gefunden wird, der "! = string :: npos" -Teil, soll es den Wert zurückgeben und in welcher Zeile dieser Wert gefunden wurde, und wenn es nicht gefunden wird, gibt es das zurück searchval wurde nicht gefunden. Würde es zu "==" anstelle von "! =" Ändern? @Charlie – gonzato
warum die 'cin.ignore(); '? –