Поиск информации в частях текстового документа и сохранение их в переменных

#c #variables #search #ifstream

#c #переменные #Поиск #ifstream

Вопрос:

У меня есть большой документ .txt, содержащий информацию. Он структурирован в таком формате:

ИДЕНТИФИКАТОР: 54670
Пол: M
Имя: Джон Доу
Адрес: Бла-бла-Бла
Электронная почта: JohnDoe@.com

Я пытаюсь создать программу, которая позволяет вводить идентификатор. Программа найдет идентификатор в текстовом документе, а затем сохранит идентификатор, пол, имя, адрес и т.д. в переменных. Я могу выполнить поиск по идентификатору и напечатать следующие строки. Но я не понимаю, как хранить определенные части каждой строки и сохранять информацию, скажем, из 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();
  

Ответ №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. Знал, что могу рассчитывать на это место. У меня есть несколько книг, но ни в одной из них не упоминаются карты. Я ценю вашу помощь. Мне нужно внести некоторые уточнения, но вы помогли мне сделать большой шаг вперед. Очень признателен.

Ответ №2:

вы можете прочитать файл один раз и сохранить информацию в map, чтобы при заданном id вы могли получить информационную карту [id].gender