2

我有这样的文件:

59 137 New York
137 362 Syracuse
216 131 New Jersey
...
..
.

我想把它读成一个结构:X - Y - 一个城市的名字

  char city[100];
  int x , y;
  f.open("map.txt");
  f >> x >> y >> city;
  while (!f.fail()) {
    f >> x >> y >> city;
  }
  f.close();

问题是,那个城市只能读取到下一个空间,所以从纽约它只能读取 New。我应该如何以某种简单而聪明的方式阅读整行的其余部分?

4

4 回答 4

3

你可以这样做:

  f.open("map.txt");
  string city;
  int x , y;
  f >> x >> y;
  getline(f,city);

  while (!f.fail()) {
  f >> x >> y;
  getline(f,city);
  }
  f.close();
于 2013-04-14T18:44:36.403 回答
3

您的文件格式似乎暗示城市名称以行尾结尾,而不是空格

您可以使用阅读该表格getline

  char city[100];
  int x , y;
  f.open("map.txt");
  while ( f ) {
      f >> x >> y;         
      f.getline(city, 100); 
  }
  f.close();
于 2013-04-14T18:45:23.907 回答
1

使用 getline(f, city) 作为城市。所以,你有 f >> x >> y; getline(f, 城市);

于 2013-04-14T18:45:32.893 回答
1

此代码正确读取空格并处理文件结尾。我认为没有其他答案可以做到这一点

while ((f >> x >> y).getline(city, 100))
{
}

有关如何正确测试文件结尾的更多信息,请参阅此内容。

当然,您应该std::string像其他人所说的那样以简单的方式做事。

于 2013-04-14T19:02:44.100 回答