c++ 如何把const char*类型赋值给string类型? 为NULL时怎么处理?
时间: 2024-10-25 12:10:48 浏览: 54
C++string类型的使用总结
在C++中,要将`const char*`类型赋值给`std::string`类型,你可以使用`std::string`的构造函数,它接受一个`const char*`作为参数:
```cpp
std::string str(c); // 使用const char* c来初始化std::string
```
这里`str`将会保存`c`指向的字符序列。
如果`const char*`变量被初始化为`nullptr`(在C++11及以上版本),即空指针,表示没有有效的内存地址,那么当你尝试将其赋值给`std::string`时,通常不会有问题,因为`std::string`可以接受空字符串。然而,如果你试图通过`nullptr`创建一个新的`std::string`实例,会抛出异常,因为这相当于调用了默认构造函数但没有实际的初始化数据:
```cpp
const char* constc = nullptr;
std::string emptyStr(constc); // 如果constc为nullptr,这会抛出std::bad_alloc异常
```
为了安全处理这种情况,建议在尝试转换之前检查`constc`是否为`nullptr`:
```cpp
if (constc != nullptr) {
std::string str(constc);
}
```
这样可以避免因空指针而引发的错误。
阅读全文