您的位置:首页 > 编程语言 > C语言/C++

C++实现字符串类型(String16/String8/const char/char)转换

2016-05-08 17:15 5347 查看
C++实现字符串类型(String16/String8/const char/char)转换

    最近在C++开发的时候遇到这么个问题,需要对函数参数中传来的String16参数进行大小写统一的转换,并且转换后的数据类型还是String16.下面就介绍一下各类数据类型的转换。

    首先是String16到String8的转换:
String16 name16 = String16("HellOThEWrolD");
String8 name8 = String8(name16);
    大家都知道,String16.string()其实就是const char16_t类型,String8.string()是const char*类型,所以转换之前需要将String16转换成const char*类型:
const char *C_name8 = name8.string();
    但是对const char*类型无法修改,所以这个时候会涉及到const char*到char*的转换。这个时候需要用到strcpy函数去实现。strcpy函数原型:
char* strcpy(char* __restrict dest, const char* __restrict src) {
return __builtin___strcpy_chk(dest, src, __bos(dest));
}
const char*到char*的转换:
char *buf = new char[strlen(C_name8)+1];
strcpy(buf, C_name8);
此时的*buf的内容就是:“HellOThEWrolD”。

如果需要又转换成String16的类型,需要:
name16 = String16(buf);
实现转换。在这需要注意的是程序执行完以后,需要对new 的buf内存进行释放:
delete []buf;


这个时候就可以对字符串进行大小写的统一转换了,详细介绍可见本人下篇博文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息