C++ 无法搜索其他偶数命令名称

标签 c++

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

最佳答案

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

关于C++ 无法搜索其他偶数命令名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945224/

相关文章:

c++ - 在 C++03 中用构造数据填充 map<string, string> 的最可读(代码方面)方式

c++ - 跟踪 Lua 中的变量以读取访问权限以启动用户定义的 C++ 方法/函数

c++ - QDialog 或 QMessageBox 在添加到现有应用程序时显示 Qt::BusyCursor

c++ - 强制派生类覆盖至少一个虚函数

C++循环直到输入特定字符

c++ - 使用 MPI 时计算 CPU 时间

c++ - 检查二叉树是否为二叉搜索树或不起作用的函数

c++ - 编译c++程序的Makefile

c++ - std::thread用来阻止并等待OS/硬件线程完成的机制是什么?

c# - 如何在 C++ 和 C# 之间传递 Int**