在txt文档的一部分中查找信息并将其存储在变量中

时间:2019-03-07 09:09:33

标签: c++ variables search ifstream

我有一个很大的.txt文档,其中包含信息。它以这种格式构造:

ID: 54670
Gender: M
Name: John Doe
Address: Blah Blah Blah
Email: JohnDoe@.com

我正在尝试创建一个允许输入ID的程序。该程序将在文本文档中找到ID,然后将ID,性别,名称,地址等存储在变量中。 我可以搜索ID并打印以下几行。但是我迷路于如何存储每一行​​的特定部分,而在找到ID后仅存储来自5行的信息。到目前为止,这就是我所拥有的。任何指针将不胜感激。在过去的几周中,我才刚刚开始自学编程。所以你们都是这么棒的资源。

struct userInfo
{
    int id;
    char gender;
    std::string name,address,email;
};
std::string search,line;
std::ifstream inFile;
inFile.open("iData.txt");

    if (!inFile)
    {
    std::cout << "Was unable to open file!";
    return 1;
    }

        std::cout << "Enter I.D" << std::endl;
        std::getline(std::cin, search);

            while (inFile.good())
            {
                std::getline(inFile, line);
                if (line.find(search) != std::string::npos)
                {
                    std::cout << line << std::endl;
                }
            }
inFile.close();

2 个答案:

答案 0 :(得分:1)

您可以创建

map<int,list<string>>

稍后解析一次文件,并拆分每行并将这些值存储在地图中

//Example code to fetch data from line
    std::getline(inFile, line);     
    int pos = line.find(":");
    std::string val  = line.substr(pos+1, line.length());

之后,您可以使用

List<string> details = map.find[id];

答案 1 :(得分:0)

您可以读取一次文件,然后将信息保存在地图中,因此当指定ID时,您可以获得信息地图[id] .gender