#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