我目前有一个如下所示的文本文件:
加州 22 23
华盛顿 43 11
俄克拉荷马 98 23
每一行的格式是string, double, double。每个都由一个空格分隔。我有以下方法来读取文件,但是它似乎在文本文件的最后一行重复了两次,这是为什么? (即它创建了两个名为“Oklahoma”的 City 对象)
void openFile() {
string line, name;
double latitude, longitude;
ifstream thefile("text.txt");
if (thefile.is_open()) {
while (getline(thefile, line)) {
std::stringstream n(line);
n >> name >> latitude >> longitude;
City newCity(name, latitude, longitude);
addNode(newCity);
}
thefile.close();
}
}
最佳答案
我敢打赌,文件的最后一行是空行,导致
n >> name >> latitude >> longitude;
安静地失败(因为您不检查输入是否成功),并且变量 line、name、latitude 和 longitude 保留上一次成功输入的值。
如何解决这个问题:
首先,尽可能缩小变量的范围:在循环内定义行、名称、纬度和经度。
其次,始终检查您的操作(例如 >>)是否成功。
关于C++ - 解析文件在最后一行迭代两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139903/