C ++如何将字符串转换为指针?

时间:2014-03-17 03:10:32

标签: c++ c opencv wrapper

我正在玩这个用于OpenCV函数imread的C包装器。

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

我认为它失败了,所以我试图测试以确保它的写得正确。我只需要知道如何创建一个String*来填充它的第一个参数..我已经尝试用

创建一个字符串
 char* filename = "~/home/test.jpg"

然后转为String* i / e

 (String*)filename

但那不起作用..我已经尝试了许多其他变种来投射到在线找到的指针,但没有发现任何cv_imread会接受。在我的代码中,filename参数必须是String*而不是其他类型。但我可以使用帮助创建String*来提供cv_imread

编辑:根据您的编辑我尝试了

 const char* filename = "/home/w/d1";


 cv_imread(new string (filename), 1);

但得到了错误:

无法将'std :: string * {aka std :: basic_string }'转换为'cv :: String '以将参数'1'转换为'cv :: Mat * cv_imread(cv :: String *,int)'  cv_imread(new string(filename),1);

如果你可以帮助我,我会很感激

1 个答案:

答案 0 :(得分:2)

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

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

或者您也可以使用string::data()。它们在C ++ 11之后具有相同的功能。


编辑:OP似乎想要将char*传递给cv_read。然后应该这样做:

cv_read(new String(filename), 1);