从OpenCV中打印String*的内容



我有一个C包装器(下面)为opencvc++ imread我需要调试。原因是当我用另一种语言包装C包装器时它不起作用文件名参数没有被正确接收

 Mat* cv_imread(String* filename, int flags)
 {
    return new Mat(cv::imread(*filename, flags));
 }

所以我需要做一些类似于下面的函数来调试它:

 using namespace std;
 Mat* cv_imread(String* filename, int flags) 
 {
    cout << filename; // but I'd need to find out how to print contents of filename other
                      //than just the pointer
    return new Mat(cv::imread(*filename, flags));
 }

我们设String* filename = "home/user/test.jpeg"

我需要打印的不是内存中8或9个字符的指针位置

如果有人能告诉我如何解引用String* filename我就可以用cout << filename-><add text here>;

使用c_str获取字符串的底层指针:

cout << filename->c_str() << endl;

因此,这也是调用cv_imread的正确方式:

return new Mat(cv::imread(filename->c_str(), flags));

由于filename是指向内存位置的指针(字符串的第一个字符),如果您这样打印它:

cout << filename;

您将获得内存地址。

如果要获取指针所指向的数据,只需使用:

cout << *filename;

相关内容

  • 没有找到相关文章

最新更新