把汉字string转化为char数组c++
时间: 2023-05-11 11:02:35 浏览: 519
可以使用以下代码将汉字字符串转换为char数组:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string str = "你好,世界!";
char c[str.length() + 1];
strcpy(c, str.c_str());
for(int i = 0; i < str.length(); i++) {
cout << c[i] << " ";
}
return 0;
}
```
输出结果为:
```
你 好 , 世 界 !
```
相关问题
string转化为unsigned char数组
可以使用以下代码将string转化为unsigned char数组:
```c++
#include <cstring>
#include <iostream>
int main() {
std::string str = "hello world";
unsigned char arr[str.size() + 1];
std::strcpy((char*) arr, str.c_str());
// print the array
for (int i = 0; i < str.size(); ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
注意,这里使用了C++的标准库函数`std::strcpy()`将字符串复制到unsigned char数组中。另外,由于unsigned char数组是一个字节一个字节的存储数据的,所以对于ASCII码表中的字符,其值与字符本身的值相同。但如果字符串中有中文等非ASCII字符,则需要进行编码转换才能正确地将其存储到unsigned char数组中。
pc c++怎么把byte字节组0xE6 0x96 0x87转为utf8存到char[]数组里并且用printf打印
在C++中,将字节序列(如`byte`类型的`0xE6 0x96 0x87`)转换成UTF-8编码并存储到`char`数组中,通常需要利用一些库函数或手动处理。这里提供一种简单的示例方法:
首先,我们知道这个字节序列对应的是汉字“爱”的GB2312编码。在C++中,你可以使用`std::wstring_convert`和`std::codecvt_utf8`来完成转换。以下是一个例子:
```cpp
#include <locale>
#include <codecvt>
#include <string>
// 字节序列
const std::vector<byte> byte_array = {0xE6, 0x96, 0x87};
// 创建宽字符字符串
std::wstring wide_string;
for (byte b : byte_array) {
wide_string += static_cast<wchar_t>(b);
}
// 设置locale以便正确转换
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
std::string utf8_string = converter.to_bytes(wide_string);
// 存储到char数组
char utf8_char_array[4]; // UTF-8编码的"爱"通常是3个字节,但为了安全考虑加1位
memcpy(utf8_char_array, utf8_string.c_str(), sizeof(utf8_char_array));
// 打印char数组
printf("UTF-8转换后的字符串: ");
for (char c : utf8_char_array) {
printf("%c", c);
}
printf("\n");
阅读全文