c++ string 转char中文乱码
时间: 2023-12-07 19:33:26 浏览: 97
这可能是因为编码不一致导致的。在C语言中,string类型是以ASCII编码方式存储的,而中文字符通常采用UTF-8或GBK编码方式。
要将string类型转换为char类型,可以使用strcpy函数。但是,如果string中包含中文字符,则会出现乱码问题。
解决方法是将中文字符转换为相应的编码方式,然后再使用strcpy函数。例如,可以使用iconv库将UTF-8编码的中文字符转换为GBK编码,然后再使用strcpy函数将其复制到char类型的变量中。
以下是示例代码:
```
#include <stdio.h>
#include <string.h>
#include <iconv.h>
int main()
{
char str[] = "你好,世界!"; // UTF-8编码
char buf[100] = {0};
iconv_t cd = iconv_open("GBK", "UTF-8"); // 将UTF-8转换为GBK编码
char* in = str;
char* out = buf;
size_t inlen = strlen(str);
size_t outlen = sizeof(buf);
iconv(cd, &in, &inlen, &out, &outlen);
strcpy(buf, out); // 将转换后的字符串复制到char类型变量中
printf("%s\n", buf);
iconv_close(cd);
return 0;
}
```
输出结果为:“你好,世界!”
阅读全文