C ++ char* 转 std::string
时间: 2023-11-17 15:04:39 浏览: 106
可以使用std::string的构造函数将char*转换为std::string,如下所示:
```cpp
const char* cstr = "Hello, world!";
std::string str(cstr);
```
也可以使用std::string的assign函数将char*转换为std::string,如下所示:
```cpp
const char* cstr = "Hello, world!";
std::string str;
str.assign(cstr);
```
相关问题
std::string str("test string"); const char* a = str.c_str(); const char* b = std::string(a).c_str(); std::string test_string(b);这段代码为啥会崩溃,请用英文回答。
This code may crash because the variable "b" points to the memory location of "a", which is a temporary pointer returned by the "c_str()" function of the "str" object. When the temporary "std::string" object is destroyed after the second line, the memory location pointed to by "b" becomes invalid. Thus, when the "test_string" object is created in the fourth line using this invalid pointer, it may cause undefined behavior, including a segmentation fault or memory corruption.
C++ uint8_t*转std::string
在C++中,将`uint8_t*`类型的字节指针转换为`std::string`通常需要遍历字节并构造字符串。`uint8_t*`通常表示无符号8位整数数组,它可能存储了某种编码的数据,比如ASCII、UTF-8等。
以下是简单的步骤:
1. 获取字节数:首先,你需要知道有多少字节需要转换。这取决于实际数据的长度。
2. 创建临时字符数组:创建一个足够大的`char`数组用于存放解码后的字符。
3. 解码字节:根据数据的实际编码,例如对于UTF-8,可以使用像`std::string::assign`这样的函数逐字节复制到`char`数组,并通过多字节编码规则将其转换成对应的字符。
4. 初始化`std::string`:最后,使用创建的字符数组初始化一个新的`std::string`。
示例代码(假设数据是UTF-8编码):
```cpp
#include <string>
#include <cstring>
std::string bytesToStdString(uint8_t* bytes, size_t byteLength) {
std::string result;
char tempBuffer[4]; // UTF-8最多4个字节表示一个字符
for (size_t i = 0; i < byteLength; ++i) {
tempBuffer[0] = static_cast<char>(bytes[i]);
if (tempBuffer[0]) { // 检查是否结束(如NULL终止)
result.append(tempBuffer, 1);
} else {
break;
}
}
return result;
}
```
阅读全文