我有一个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;