这是我的循环
while(getline(iss,token,','))
cout<<token<<endl;
有问题的字符串是:
john doe,新人,电子邮件@mail.com
运行while leave输出:
john doe
freshman
email@email.com
我的目标是将每段解析后的字符串分配给变量。 例如:
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));
答案 0 :(得分: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);
}
分别将字符串的部分提取到各个变量中,然后将它们发送到构造函数。