парсинг строки с использованием токена и присвоение переменным

0

вот моя петля

while(getline(iss,token,','))
     cout<<token<<endl;

строка, о которой идет речь, такова:

john doe, первокурсник, электронная почта @email.com

запуск выходных выходов:

john doe
freshman
[email protected]

Моя цель - присвоить каждой части анализируемой строки переменной. пример:

name = token;
cout<<"name: "<<name<<endl:

будет производить

name: John doe

Тогда я бы повторил для остальных 2 штук. Проблема в том, что я не могу понять, как назначить токен имени, году и электронной почте без перезаписи с каждым прохождением через цикл.

 90   string comma;
 91   string line;
 92   string token;
 93   ifstream myfile("student.dat");
 94   string name,email="";
 95   string status="";
 96   int id,i;
 97   if (myfile.is_open()){
 98     while ( getline (myfile,line) ) {
 99         //parse line
100         string myText(line);
101         cout<<line<<endl;
102         istringstream iss(myText);
103         if (!(iss>>id)) id=0;
104         i = 0;
105         while(getline(iss,token,','))
106         {
107             cout<<token<<endl;
108            
109            
110                 
111                
112            
113
114            
115         }
116         Student newStudent(id,line,"","");
117         Student::studentList.insert(std::pair<int,Student>(id,newStudent));
Теги:
parsing

1 ответ

0

Вы, вероятно, хотите что-то вроде этого:

std::string name, year, email;

if (std::getline(iss, name, ',') &&
    std::getline(iss, year, ',') &&
    std::getline(iss, email))
{
     newStudent = Student(id, name, year, email);
}

Извлеките части строки в отдельные переменные, а затем передайте их конструктору.

  • 0
    Это не сработает, потому что сначала говорится, что newStudent не выводит, когда я иду распечатывать содержимое карты.
  • 0
    Единственное, что печатается, это идентификационный номер. Не похоже, что что-то хранится в имени, году, электронной почте.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню