从OpenCV打印String *的内容

时间:2014-03-19 13:35:07

标签: c++ opencv wrapper

我有一个用于opencv c ++ imread的C包装器(下面)我需要调试。原因是当我用另一种语言包装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>;

2 个答案:

答案 0 :(得分:1)

使用c_str获取字符串的基础指针:

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

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

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

答案 1 :(得分:1)

由于filename是指向内存位置的指针(字符串的第一个字符),如果以这种方式打印出来:

cout << filename;

您将获得内存地址。

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

cout << *filename;