0
  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();

考虑这段代码 wherein是类型ifstream并且 filename是我们从中读取数据的文件的名称。输入文件的格式非常好 - 每行有 3 个字符串。这部分应该简单地打印文件中的所有数据,但 id 所做的是打印除第一行之外的所有行。为什么跳过第一行?

4

4 回答 4

2

in >> name >> email >> group;从循环体中删除。有条件的就够了。

于 2012-12-09T10:25:15.403 回答
0

考虑这一行:

while (in >> name >> email >> group) {

每次程序到达这一行时,它都会执行括号内的代码。在这种情况下,“in”被读取并填充名称、电子邮件、组,甚至在实际进入循环主体之前。

因此,当执行循环体时,第一行已经被读取。

于 2012-12-09T10:28:50.443 回答
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();
于 2012-12-09T10:39:42.327 回答
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();
于 2012-12-09T10:26:07.733 回答