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,否則沒有賦值'\0' 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