c++ - 带有迭代器的for循环产生错误的结果c++

标签 c++ unix g++

我正在创建一个 HTML 文件,该文件创建一个名为 Quake 的对象的 Google map ,其中包含纬度、经度、震级和深度。另一个名为 QuakeData 的类是创建 Quake 对象 vector 的类。

下面的函数获取对象的 vector ,并获取它们的详细信息(纬度、经度和震级),然后以这种格式将它们输出到 HTML 中:

[58.678, -151.887, 'M2.6'],

第一个数字是纬度,第二个是经度,第三个是震级,格式如下所示。

这是我目前拥有的循环,它使用 getter 提取纬度、经度和震级:

double mag;
double lat;
double lon;
string complete;
ostringstream out;
vector<Quake>::const_iterator i;
for (i = quakes.begin(); i != quakes.end(); i++)
{
    mag = i->getMagnitude();
    lat = i->getLatitude();
    lon = i->getLongitude();

    out << "[" << lat << ", " << lon << ", 'M" << mag << "'],";
    complete = out.str();
    outfile << complete << endl;
}

但是这会产生这样的结果:

[58.678, -151.887, 'M2.6'], (end of line)
[58.678, -151.887, 'M2.6'],[33.92, -117.08, 'M2.9'],(end of line)
[58.678, -151.887, 'M2.6'],[33.92, -117.08, 'M2.9'],[-3.203, 142.864, 'M4.7'],(end of line)

我想要的是:

[58.678, -151.887, 'M2.6'],(end of line)
[33.92, -117.08, 'M2.9'],(end of line)
[-3.203, 142.864, 'M4.7'],(end of line)

这里到底出了什么问题?任何帮助将不胜感激。

最佳答案

每个循环都会将新数据附加到现有流:将声明移到循环内,以便它为每一行使用一个新实例。

for (i = quakes.begin(); i != quakes.end(); i++)
{
  ostringstream out;

关于c++ - 带有迭代器的for循环产生错误的结果c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15509298/

相关文章:

javascript - 如何在c++中使用html、javascript

c++ - libstdc++ 拒绝将 volatile 右值分配给 std::ignore 是错误的吗?

c++ - 函数 'strlen' 无法解析 - Eclipse cpp

c++ - 根据指向第一个和最后一个元素的指针计算数组中元素的数量

c++ - 你如何在 osx 上使用 waf 链接 opengl 和 glut?

c++ - PPL when_all 具有不同类型的任务?

ruby - *nix 是什么意思?

Bash 终端在运行脚本后关闭

c++ - 在 Boost 序列化中展平嵌套的命名值对

gcc - 如何在 CentOS 上安装 GCC/G++ 8