在c ++中拆分数组字符串

时间:2011-10-10 09:49:49

标签: c++ opencv

我是cpp的新手,并且我想要拆分数组字符串

我有

    for( i = k = 0; i < points[1].size(); i++ )
    {
        cout << points[1][k];
    }

输出&gt;&gt;

    [390.826, 69.2596]
    [500.324, 92.9649]
    [475.391, 132.093]
    [5.60519e-44, 4.62428e-44]

我想要

    390.826
    69.2596
    500.324
    92.9649
    475.391
    132.093
    5.60519e-44
    4.62428e-44

请帮助我。谢谢

2 个答案:

答案 0 :(得分:3)

假设点的类型有public个成员xy

for( i = k = 0; i < points[1].size(); i++ )
{
    cout << points[1][k].x << endl;
    cout << points[1][k].y << endl;
}

如果成员是其他成员,比如XY(大写),那么请改用大写字母(或者不管它是什么)。

您编码的原因是打印输出的方式,因为operator<<已经为点的类型重载了。类似的东西:

std::ostream & operator<<(std::ostream & out, const point &p)
{
    return out << "[" << p.x << "," << p.y << "]\n"; 
}

如果您可以在项目源代码中的某处搜索上述定义(或类似内容),然后可以将其更改为:

std::ostream & operator<<(std::ostream & out, const point &p)
{
    return out << p.x << "\n" << p.y << "\n"; 
}

然后您不需要更改for循环中的代码。

答案 1 :(得分:1)

这与字符串拆分无关,points[1][k]实际返回的内容(即 type )。然后看看它是如何实现流出运算符(operator<<)的,你会看到如何打印上面的内容。这应该为您提供关于两个单独值(即该​​类型的字段)的线索,您只需访问它们并打印出来。