c++如何将字符串强制转换为指针

C++ how would I cast a string to a pointer?

本文关键字:转换 指针 字符串 c++      更新时间:2023-10-16

我正在使用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

编辑:per your Edit I tried

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

 cv_imread(new string (filename), 1);

but got error:

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

如果你能帮我的话,我会很感激的

使用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);