std::vector<std::__cxx11::basic_string<char>>& 和 std::vectorstd::string&怎么转换
时间: 2024-07-17 08:00:47 浏览: 127
`std::vector<std::__cxx11::basic_string<char>>&` 和 `std::vector<std::string>&` 是 C++ 中两种不同类型的向量,前者表示一个向量,其中包含的是 C++11 标准的宽字符字符串(`std::__cxx11::basic_string<char>`),后者表示一个向量,其中包含的是普通字符字符串(`std::string`)。
如果你想要在这些类型之间进行转换,可能的情况有:
1. **从宽字符字符串向普通字符串转换**:如果你有一个宽字符向量,你可以逐个创建标准字符串并将其添加到普通字符串向量中。例如:
```cpp
std::vector<std::__cxx11::basic_string<char>> wideStrings;
std::vector<std::string> narrowStrings;
for (const auto& wideStr : wideStrings) {
narrowStrings.push_back(std::string(wideStr)); // 使用构造函数转换
}
```
2. **从普通字符串向宽字符字符串转换**:如果需要,你需要根据具体需求决定是否这样做,因为这可能会导致数据丢失或额外的开销,如果宽字符不是必需的。如果没有变化,直接传递即可。
3. **类型兼容的混合操作**:在某些情况下,如果你的操作不需要区分宽字符和普通字符串(比如只是遍历、比较长度等),可以直接使用 `std::vector<std::string>&`,因为它们是互为派生的类型,可以安全地相互赋值或进行其他操作。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)