C/C++语言几种字符串类型互相转换
文章目录
const char * , char * , char[] , string 互相转换.
原类型char *
转string
也就是 char * 转 string.
赋值即可.
char *st = "hello"; // (编译提示警告)
string st1 = st;
转char[]
也就是 char * 转 char[]
不能直接转,
可以内存拷贝.
char *st = "hehe"; // 编译器警告
char st1[] = "lalalala";
strncpy(st1, st, strlen(st) + 1); // 注意加1操作
转const char *
也就是 char * 转 const char *
直接赋值
char *st = "hehe"; // (编译提示警告)
const char *st1 = st;
原类型string
转const char *
也就是 string 转 const char*
很简单.string类型直接有个转换函数.
string st = "My test";
const char *st1 = st.c_str();
转char *
也就是 string 转 char*
这步不能直接转.
实际上多数是先转const char 后再换成char
string st = "My test";
char *st1 = const_cast(st.c_str()) ;
转char[]
也就是 string 转 char[]
也是不能直接赋值转换
要通过内存拷贝.
string ts = "My test1";
char ts1[] = "lalallalalaaaa";
strncpy(ts1, ts.c_str(), ts.length() + 1); // 注意,一定要加1,否则没有赋值'\0'
另外也可以用for循环之类的
//ts string 类型
//ts1 char[] 类型
ts1[i] = ts[i];
循环结束后要补一个
ts1[i+1] = '\0';
原类型是char[]
转 string
也就是 char[] 转 string.
直接可以赋值.
char st[] = "hello";
string st1 = st;
转 char *
也就是 char[] 转 char *
也是直接赋值.
char str[] = "lala";
char *str1 = str;
转 const char *
也就是 char[] 转 const char *
其实前面也说过,char 转 const char 可以直接拷贝.
这里也可以直接试试,不行就先转char 再转 const char .
char str[] = "lala";
char *str1 = str;
const char* =str1 ;
参考
本文基本上90%以上内容都是copy 于下面这个链接
https://www.cnblogs.com/qiumingcheng/p/11204863.html