【发布时间】:2014-02-23 00:14:02
【问题描述】:
89 int Student::loadStudents() {
90 Student newStudent;
91 string comma;
92 string line;
93 ifstream myfile("student.dat");
94 string name,email="";
95 string status="";
96 int id;
97 if (myfile.is_open()){
98 while ( getline (myfile,line) ) {
99 //parse line
100 string myText(line);
101 istringstream iss(myText);
102 if(!(iss>>id)) id=0;
103
104 std::ignore(1,',');
105 std::getline(iss,name,',');
106 std::getline(iss,status,',');
107 std::getline(iss,email,',');
108 cout<<name<<endl;
109 Student newStudent(id,name,status,email);
110 Student::studentList.insert(std::pair<int,Student>(id,newStudent));
以上是我定义的方法。执行 cout 时,输出为:
约翰·多伊
马特·史密斯
在我添加第二个 getline(iss,name,',') 之前,cout 什么也没做。
谁能解释为什么它与重复的行一起工作以及为什么相同的代码对状态和电子邮件不起作用?
文件中的示例行:
1,john doe,freshman,jd@email.com
编辑:
我在第一个 getline(iss,name,',') 之前使用了 std::ignore(1,',') 并收到错误 'ignore' is undeclared in this namespace 'std'。
【问题讨论】:
-
如果您还包括文件格式/布局会更容易。