вот моя петля
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));
Вы, вероятно, хотите что-то вроде этого:
std::string name, year, email;
if (std::getline(iss, name, ',') &&
std::getline(iss, year, ',') &&
std::getline(iss, email))
{
newStudent = Student(id, name, year, email);
}
Извлеките части строки в отдельные переменные, а затем передайте их конструктору.