c++ unsigned char[] 转换成string
时间: 2023-07-23 17:18:01 浏览: 47
在 C++ 中,可以使用 `std::string` 类型来表示字符串,而 `unsigned char[]` 类型是一个字符数组,如果想把 `unsigned char[]` 数组转换成 `std::string` 字符串,可以使用 `std::string` 的构造函数或 `std::string` 的 `assign` 函数。
以下是使用构造函数实现 `unsigned char[]` 转换成 `std::string`:
```cpp
unsigned char arr[] = {'H', 'e', 'l', 'l', 'o'};
size_t arrSize = sizeof(arr) / sizeof(unsigned char);
std::string str(arr, arr + arrSize);
```
上面代码中,`std::string` 的构造函数接受两个迭代器参数,第一个参数指向字符数组的开始位置,第二个参数指向字符数组的结束位置。在这里,我们使用 `sizeof` 运算符计算出 `unsigned char` 数组的长度,然后将其转换成迭代器。
以下是使用 `assign` 函数实现 `unsigned char[]` 转换成 `std::string`:
```cpp
unsigned char arr[] = {'H', 'e', 'l', 'l', 'o'};
size_t arrSize = sizeof(arr) / sizeof(unsigned char);
std::string str;
str.assign(arr, arr + arrSize);
```
上面代码中,`std::string` 的 `assign` 函数接受两个迭代器参数,第一个参数指向字符数组的开始位置,第二个参数指向字符数组的结束位置。在这里,我们使用 `sizeof` 运算符计算出 `unsigned char` 数组的长度,然后将其转换成迭代器。
无论是使用构造函数还是使用 `assign` 函数,都需要注意字符数组的末尾不应该包含 NULL 结尾符,否则会导致转换出的字符串长度不正确。