c++读带空格的字符串

C++ read string with spaces

本文关键字:字符串 空格 c++      更新时间:2023-10-16

我有一个这样的文件:

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 York只能读到New。我该如何以一种简单而聪明的方式阅读一行的其余部分呢?

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

您可以使用getline

读取该表单
  char city[100];
  int x , y;
  f.open("map.txt");
  while ( f ) {
      f >> x >> y;         
      f.getline(city, 100); 
  }
  f.close();

你可以这样做:

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

使用getline(f, city)表示城市。有f>> x>> y;getline (f,市);

该代码读取空格并正确处理文件结束。我认为其他答案都不会这样做

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

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

当然你应该像其他人说的那样使用std::string来做事情。