wstring转string
时间: 2023-08-10 07:01:33 浏览: 86
要将 wstring 转换为 string,你可以使用 C++ 的标准库函数 `std::wstring_convert` 或者 `std::wcstombs` 来实现。下面是两种方法的示例代码:
方法一:使用 `std::wstring_convert`(C++11 及以上版本):
```cpp
#include <iostream>
#include <locale>
#include <codecvt>
#include <string>
int main() {
std::wstring wstr = L"Hello, world!";
// 创建一个宽字符串转换器
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
// 将宽字符串转换为普通字符串
std::string str = converter.to_bytes(wstr);
// 输出最终的字符串
std::cout << str << std::endl;
return 0;
}
```
方法二:使用 `std::wcstombs`(C++98 及以上版本):
```cpp
#include <iostream>
#include <cstdlib>
#include <string>
int main() {
std::wstring wstr = L"Hello, world!";
// 计算转换后的字符串长度
size_t strLen = std::wcstombs(NULL, wstr.c_str(), 0);
// 分配足够的空间来存储转换后的字符串
char* buffer = new char[strLen + 1];
// 将宽字符串转换为普通字符串
std::wcstombs(buffer, wstr.c_str(), strLen);
buffer[strLen] = '\0'; // 添加字符串结束符
// 创建最终的字符串对象
std::string str(buffer);
// 输出最终的字符串
std::cout << str << std::endl;
// 释放内存
delete[] buffer;
return 0;
}
```
无论使用哪种方法,都可以将 wstring 转换为 string 类型。这些示例代码假设你想要将宽字符串转换为 UTF-8 编码的普通字符串。如果你需要其他编码方式,请相应地调整代码。
阅读全文