in.open(filename.c_str(), ifstream::in);
string name, email, group;
while (in >> name >> email >> group) {
in >> name >> email >> group;
cout << name << email << group);
...
}
in.close();
请考虑以下代码,其中in
的类型为ifstream
,filename
是我们从中读取数据的文件的名称。输入文件的格式非常好 - 许多行每行3个字符串。
这件作品应该只是打印文件中的所有数据,但id的作用是打印除第一行以外的所有行。为什么跳过第一行?
答案 0 :(得分:2)
从循环体中删除in >> name >> email >> group;
。条件就足够了。
答案 1 :(得分:0)
你读的太多了。
while (in >> name >> email >> group)
已经读取数据一次,下一行再次读取数据,覆盖您的数据。摆脱重复,你的cout应该工作得很好。
in.open(filename.c_str(), ifstream::in);
string name, email, group;
while (in >> name >> email >> group) { //Reads the data into the variables
cout << name << email << group; //Outputs the variables.
...
}
in.close();
答案 2 :(得分:0)
考虑这一行:
while (in >> name >> email >> group) {
每次程序到达此行时,它都会执行括号内的代码。在这种情况下,即使在实际进入循环体之前,也会读取“in”并填充名称,电子邮件,组。
因此,当执行循环体时,第一行已被读取。
答案 3 :(得分:0)
如果输入文件中的新行操作符没有将字符串分隔,请使用代码来读取它。
ifstream in;
in.open("urfile.txt",ios::beg);
string name, email, group;
while (in.good()) {
in >> name >> email >> group;
cout << name << email << group;
}
in.close();