0

祝大家美好的一天,我正在寻求有关如何修复有关在 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(那些处于奇数位置的人)时,他们被发现并显示在命令提示符中,然后当我开始搜索那些处于偶数位置的人时,他们没有找到并且不显示在命令提示符中,谁能帮助我? 提前致谢。

4

2 回答 2

1

问题是空行也是行。对于第一个人name并且age被正确读取,但是在循环的下一次迭代中,name将是空的,因为getline(search_sample, name)读取了空行。

于 2013-09-22T15:07:51.307 回答
1
getline(search_sample, name);
getline(search_sample, age);
getline(search_sample, blank_line);

似乎是一种改进。

于 2013-09-22T15:13:38.137 回答