char* char[] string之间的相互转换 川长思鸟来 2022-06-10 10:09 227阅读 0赞 网上也有很多这种文章了,但是好像都没有十分的全面,这样的话,自己来一个。 一、char\*和char\[\]之间的转换 1.char\*转成char\[\] 用strcpy函数就可以了。 char* test1 = "char*"; char test2[10]; strcpy(test2, test1); printf("test1 to test2 %s\n", test2); 2.char\[\]转成char\* 直接赋值。 char test2[10] = "char[]"; char *test1; test1 = test2; printf("test2 to test1 %s\n", test1); 二、char\*和string之间的转换 1.char\*转成string 直接赋值。 char *test1 = "char*"; std::string test3; test3 = test1; printf("test1 to test3 %s\n", test3.c_str()); 2.string转成char\* 通过c\_str()函数。 char *test1; std::string test3 = "string"; test1 = const_cast<char*>(test3.c_str()); printf("test3 to test1 %s\n", test1); 这里有一个是:c\_str()返回的是const char\*类型的字符串,所以要强转一下。 三、char\[\]和string之间的转换 1.char\[\]转成string 直接赋值。 char test2[10] = "char[]"; std::string test3; test3 = test2; printf("test2 to test3 %s\n", test3.c_str()); 2.string转成char\[\] 两种方法。 (1)通过strcpy和c\_str函数 char test2[10]; std::string test3 = "string"; strcpy(test2, test3.c_str()); printf("test3 to test2 %s\n", test2); (2)通过循环复制 char test2[10]; std::string test3 = "string"; for(int i = 0; i < test3.length(); i++) { test2[i] = test3[i]; } test2[test3.length()] = '\0'; printf("test3 to test2 %s\n", test2); 建议用第一种。
还没有评论,来说两句吧...