检索cout,传递到str

Retrieve cout, pass into str

本文关键字:str cout 检索      更新时间:2023-10-16

在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组数字,但由于它们不是通过markrname.attributename可访问的类属性。让它们输出的唯一方法是通过cout。其他一切都让我得到了地址,例如0xbf76ea14

因此,我可以看到两个可能的答案:1) 在cout之后检索行并将其转换为字符串的最简单方法2) 有什么办法能骗它把印刷品当成定制品,跳过一步吗?

您无法以编程方式检索已发送到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

从Aruco源代码中,您可以看到它正在使用的流插入运算符:

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访问它。