我有一个用于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>;
答案 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;