大家好,我正在寻求帮助,了解如何修复我在 C++ 中搜索文件的代码,
示例文本(test.txt):
name: jason statham
age: 19
name: jeremy renner
age: 17
name: kim tak gu
age: 18
name: donnie yen
age: 20
这是我的代码:
#include<conio.h>
#include<iostream>
#include<string>
#include<fstream>
#include<istream>
#include<windows.h>
void search() //function only of my main program
{
string name="", searchname;
string age="";
ifstream search_sample("test.txt");
cout<<"Enter name to be search: ";
cin.ignore();
getline(cin, searchname);
size_t pos;
while(search_sample.good())
{
getline(search_sample, name);
getline(search_sample, age);
pos=name.find(searchname);
if(pos!=string::npos)
{
cout<<"\nRecord Found\n\n";
cout<<name<<"\n";
cout<<age<<"\n";
break;
}
}
getch();
main();
}
当搜索 jason statham 和 kim tak gu(那些处于奇数位置的人)时,他们被发现并显示在命令提示符中,然后当我开始搜索那些处于偶数位置的人时,他们没有找到并且不显示在命令提示符中,可以有人帮帮我吗?提前致谢。
最佳答案
问题是空行也是行。对于第一个人 name
和 age
被正确读取,但在循环的下一次迭代中, name
将为空,因为 getline (search_sample, name)
读取空行。
关于C++ 无法搜索其他偶数命令名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945224/