我的文件是这样的:
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();
问题是,那个城市只读到下一个空间,所以从纽约它只读新。 我应该如何以一种简单而聪明的方式阅读整条线路?
答案 0 :(得分: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();
答案 1 :(得分:3)
您的文件格式似乎暗示城市的名称在行的结尾处结束,而不是空间。
您可以使用getline
char city[100];
int x , y;
f.open("map.txt");
while ( f ) {
f >> x >> y;
f.getline(city, 100);
}
f.close();
答案 2 :(得分:1)
对城市使用getline(f,city)。所以,你有f>> x>> Ÿ; getline(f,city);
答案 3 :(得分:1)
此代码读取空格并正确处理文件末尾。我认为没有其他答案可以做到这一点
while ((f >> x >> y).getline(city, 100))
{
}
有关如何正确测试文件结尾的详细信息,请参阅this。
当然,你应该像其他人所说的那样使用std::string
轻松做事。