ファイル名をパラメータとして取り込み、ファイルを開き、検索する値を入力するようにユーザーに依頼する関数を作成する必要があります。その値のファイルを検索します。この割り当てに使用するファイルは、収益と経費の値のリストを含むファイルです。私はすべてのことを試してみたが、私が知っている値をファイルに入れても "値が見つからない"プロンプトを受け取り続ける。C++ファイル内の数値を検索する関数
コードが
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;
}
}
}
あるすべてのヘルプは非常にあなたがwhile
ループの側からelse
一部を配置する必要があり
searchvalが文字列でない場合、それが返されます含まれますか? (!=の代わりに!=) – Charlie
stringにsearchvalが見つかった場合、 "!= string :: npos"部分は値を返し、その値が見つかったはずです。 searchvalは見つかりませんでした。それを "=="の代わりに "!="に変更すると助けになりますか? @Charlie – gonzato
なぜ 'cin.ignore(); '? –