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

标签 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);

但出现错误:

对于参数“1”到“cv::Mat* cv_imread(cv::字符串*,整数)' cv_imread(新字符串(文件名), 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);

关于C++ 如何将字符串转换为指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22446297/

相关文章:

c - 为什么我没有收到段错误?

C 代码在 64 位 Ubuntu 14.04 中有效,但在 32 位 Ubuntu 14.04 中失败

c++ - 在 opencv 中对齐轨迹栏

python - cv2.CalibrateCamera中retval返回值的含义

c++ - 隐藏容器的类的更好接口(interface)

c++ - 3.4.2 从 n3290 草案中查找依赖于参数的名称

mixed-mode - 混合模式库和 CRT 依赖项 - 帮助

c - 为什么 scanf 无法解析由/标记分隔的输入?

opencv - 查找 RANSAC 的 OpenCV 源文件

c++ - 设置和取消设置 64 位整数中的特定位