私のプログラムは、テキストファイルでWordを検索し、そのWordが見つかった場合は、行全体を印刷または表示する必要があります。例:
従業員の名前日付入社ポジションプロジェクト年間給与
ユーザーが検索ワードを入力します:
会計士
プログラムはテキストでaccountant
を検索します。それが見つかると、次を返します。
従業員名日付入社ポジションプロジェクト年間給与 トムジョーンズ2011年1月13日会計士価格55000
これは私が思いついたコードですが、機能しません。
void KeyWord(ifstream &FileSearch)
{
string letters;
int position =-1;
string line;
ifstream readSearch;
cout<<"enter search Word ";
cin>>letters;
"\n";
FileSearch.open("employee");
if(FileSearch.is_open())
{
while(getline(FileSearch, line))
{
FileSearch>>line;
cout<<line<<endl;
position=line.find(letters,position+1);
if(position==string::npos);
if(FileSearch.eof())
break;
cout<<line<<endl;
}
}
cout<<"Cant find"<<letters<<endl;
}
簡単な答え:
void Keyword(ifstream & stream, string token) {
string line;
while (getline(stream, line)) {
if (line.find(token) != string::npos) {
cout << line << endl;
}
}
cout << token << " not found" << endl;
}
一般に、<<
とgetline
は、stream
から読み取るときに一緒に使用すると、行末で奇妙な問題が発生します。