检索cout,传入str

时间:2014-04-28 05:09:17

标签: c++ cout aruco

在ARuco中,标记是一个自定义类。

使用以下行:cout<<Markers[0];标记为vector<Marker>

可以输出以下示例:185=(61.277,163.281) (186.9,174.062) (182.589,293.509) (55.8044,296.465) Txyz=-999999 -999999 -999999 Rxyz=-999999 -999999 -999999

我需要前4组数字,但是afaik它们不是通过markername.attributename的类的可访问属性。获得输出的唯一方法是通过cout。其他一切都让我获得了地址,例如0xbf76ea14

我可以看到两个可能的答案: 1)在cout之后检索线条的最简单方法,并将其放入我可以使用的字符串中 2)任何方式欺骗它认为它打印到cout并跳过一步?

2 个答案:

答案 0 :(得分:0)

您无法以编程方式检索已发送到cout的内容。

您可以将项目输出到内存缓冲区:

#include <sstream>
#include <ostream>
#include <string>

// ...

std::ostringstream oss;
oss << Markers[0];
std::string the_output = oss.str();

// you write some code to parse out the info you want from this string

答案 1 :(得分:0)

从你可以看到的Aruco source流插入运算符,它正在使用:

for (int i=0;i<4;i++) str<<"("<<M[i].x<< ","<<M[i].y<<") ";

假设Markers的类型为aruno::Marker,您应该只能使用Markers[0].x来获取第一个点的x值。

如果Markers的类型为std::vector<aruno::Marker>,则您可以使用Markers[0][0].x访问它。