zoukankan      html  css  js  c++  java
  • Mat、uchar*、uchar[]之间的相互转换

    Mat preImg = imread("9.jpg")

    Mat dst = Mat(preImg.size, CV_8UC3, Scalar(255, 255, 255));

    //uchar*给Mat转换数据的时候,需要先定义图片的大小

    uchar* s = preImg.data; //Mat转uchar*

    dst.data = s; //uchar*转Mat

    char* t = (char*) s; //uchar* 转char*

    char a[9]; //定义char[]数组

    char* m = a; //char数组转char*

    string str = m; //char* 转string

    char* m = const_cast<char*>(str.c_str());//string转char*

    char m[] = "string";  string str = m; //char数组转string

    string str="213"; char m[]="hjkjdfas"; strncpy(m,str.c_str(), str.length()+1);//string转char数组

    char []与char *之间转换
    
    char []转char *:直接进行赋值即可
    
    // char[] 转char *
    char str[] = "lala";
    char *str1 = str;
    cout << str1 << endl;
    
    char *转char[]:字符拷贝实现,不能进行赋值操作
    
    // char *转换为char []
    const char *st = "hehe";
    char st1[] = "lalalala";
    strncpy(st1, st, strlen(st) + 1); // 注意加1操作
    // tp = temp; //错误,不能实现
    cout << st1 << endl;
    
    char 与const char 之间转换
    
    const char 转char :拷贝实现,不能进行赋值
    
    // const char *转char *
    const char *st = "lala";
    // 直接赋值不可以
    //char *st1 = st; // (不可以编译器报错)
    //cout << st1 << endl;
    // 另外开辟空间,将字符一个一个复制过去
    char *ncstr = new char[strlen(st) + 1];
    strcpy(ncstr, st);
    cout << ncstr << endl;
    
    char 转const char :直接进行赋值
    
    // char *转const char *
    char *st = "hehe"; // (编译提示警告)
    const char *st1 = st;
    cout << st1 << endl;
    
    char *与string之间转换
    
    char *转string:1)直接赋值;2)构造转换实现
    
    // char*转换为string
    // (注意,定义char *变量,并直接赋值,最好定义为const变量,否则编译器警告)
    const char *st = "hello";
    // 赋值转换
    string st1 = st;
    cout << st1 << endl;
    // 构造转换
    string s1(st, st + strlen(st));
    cout << s1 << endl;
    // 改变const char *变量值
    st = "lalala";
    cout << st << endl;
    
    string转char *:赋值操作(注意类型转换)
    
    // string转char *
    string st = "My test";
    //char *st1 = st; // 错误类型不同
    //char *st1 = st.c_str(); // 错误类型不同
    char *st1 = const_cast<char *>(st.c_str()) ;
    cout << st1 << endl;
    
    char[]与string之间转换
    
    char []转string:1)直接赋值;2)构造转换实现
    
    // char[]转换为string
    char st[] = "hello";
    // 直接赋值实现
    string st1 = st;
    cout << st1 << endl;
    // 构造实现
    string st2(st, st + strlen(st));
    cout << st2 << endl;
    
    string转char[]:拷贝实现,不能直接赋值
    
    // string转char []
    string ts = "My test1";
    //char ts1[] = ts; // 错误
    //char ts1[] = const_cast<char *>(ts.c_str()); // 错误
    char ts1[] = "lalallalalaaaa";
    strncpy(ts1, ts.c_str(), ts.length() + 1); // 注意,一定要加1,否则没有赋值''
    cout << ts1 << endl;
    return 0;
    
    总结
    
    涉及到char []字符数组与其它类型转换,一般需要进行拷贝,不能直接赋值实现。char []和char *都可以通过构造新的string完成其对string的转换。涉及到到char *转换,需要注意类型一致,同时注意const的使用。

    参考:https://blog.csdn.net/weixin_43081805/article/details/84347514?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

    https://blog.csdn.net/yzhang6_10/article/details/51164300

  • 相关阅读:
    vs调试技巧
    ubuntu中安装Docker
    Docker的简单认知
    mysql笔记01
    5款实用的硬盘、SSD固态硬盘、U盘、储存卡磁盘性能测试工具绿色版
    怎么用HD Tune检测硬盘坏道
    Dreamweaver_CS6安装与破解
    Microsoft Office 2013 (64位) 免费完整版(安装 + 激活)
    Microsoft office2007免费版下载(安装 + 破解)
    OneNote如何使用
  • 原文地址:https://www.cnblogs.com/zhibei/p/13213563.html
Copyright © 2011-2022 走看看