如何在Eigen库中获取Vector3f或其他类型的文本表示形式。我看到了许多使用.format()并返回WithFormat类的示例。然后可以将其与cout一起使用。但是,我正在寻找以某些人类可读形式将Vector3f作为std:string获取的方法。确切的格式不太重要,因此,如果Eigen具有任何默认格式,那么效果也很好。
注意:我当然可以使用stringstream代替cout,但是我希望有更直接的方法可以做到这一点。
我最终采用的方法如下:
static std::string toString(const Vector3d& vect)
{
return stringf("[%f, %f, %f]", vect[0], vect[1], vect[2]);
}
static string stringf(const char* format, ...)
{
va_list args;
va_start(args, format);
int size = _vscprintf(format, args) + 1;
std::unique_ptr<char[]> buf(new char[size] );
#ifndef _MSC_VER
vsnprintf(buf.get(), size, format, args);
#else
vsnprintf_s(buf.get(), size, _TRUNCATE, format, args);
#endif
va_end(args);
return string(buf.get());
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句