C++语言中 error:conversion from 'const value_type*' {aka 'const wchar_t*'} to non-scalar type 'std::string'是什么意思
时间: 2024-01-01 20:04:23 浏览: 231
VCCString-int-string-char.txt.rar_conversion_vc string
这个错误通常是因为在将一个 `const wchar_t*` 类型的值转换成 `std::string` 类型时出现了错误。`const wchar_t*` 类型是一个指向 `wchar_t` 字符数组的指针,而 `std::string` 是一个字符串类,两者并不兼容。
如果你需要将 `const wchar_t*` 类型的字符串转换成 `std::string` 类型,可以使用 `std::wstring_convert` 类或者 `std::wcstombs` 函数来进行转换。比如:
```c++
#include <locale>
#include <codecvt>
#include <string>
const wchar_t* wstr = L"hello";
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::string str = converter.to_bytes(wstr);
```
或者:
```c++
#include <cstdlib>
#include <string>
const wchar_t* wstr = L"hello";
std::string str;
std::size_t len = std::wcstombs(nullptr, wstr, 0);
if (len != static_cast<std::size_t>(-1)) {
char* buf = new char[len + 1];
std::wcstombs(buf, wstr, len + 1);
str = buf;
delete[] buf;
}
```
这样就可以将 `const wchar_t*` 类型的字符串转换成 `std::string` 类型了。
阅读全文