char[],char *,string之間轉換


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的使用。
---------------------
作者:Dream_yz
來源:CSDN
原文:https://blog.csdn.net/yzhang6_10/article/details/51164300
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM