/home/vrv/src/EDSMClient-XC_svn/EdsmDocAuthData/EdsmDocAuthUserData.cpp:2507: 错误: conversion from ‘const char*’ to non-scalar type ‘std::__cxx11::wstring {aka std::__cxx11::basic_string<wchar_t>}’ requested std::wstring strSend = write.write(sendRoot).c_str(); ^
时间: 2024-02-14 08:27:15 浏览: 89
VRV和中央空调简单比较.pdf
这个错误是因为将`const char*`类型的字符串直接赋值给`std::wstring`类型的变量导致的。
`std::wstring`是一个宽字符字符串类型,而`c_str()`函数返回的是`const char*`类型的字符串。它们之间不是直接可赋值的。
要解决这个问题,你可以使用适当的转换函数来将`const char*`类型的字符串转换为`std::wstring`类型的字符串。在C++中,可以使用`std::wstring_convert`或者`std::wstringstream`来进行转换。
以下是使用`std::wstring_convert`进行转换的示例代码:
```cpp
#include <string>
#include <locale>
#include <codecvt>
std::wstring strSend = std::wstring_convert<std::codecvt_utf8<wchar_t>>().from_bytes(write.write(sendRoot));
```
在上面的示例中,我们使用了`std::wstring_convert`和`std::codecvt_utf8<wchar_t>`来进行UTF-8到宽字符字符串的转换。
如果你使用的是C++11及以上版本,也可以使用`std::wstringstream`来进行转换:
```cpp
#include <string>
#include <sstream>
std::wstringstream wss;
wss << write.write(sendRoot);
std::wstring strSend = wss.str();
```
在上面的示例中,我们将`write.write(sendRoot)`输出到`std::wstringstream`对象中,然后通过调用`str()`函数获取宽字符字符串。
请根据你的实际需求选择适合的转换方法,并根据需要包含相应的头文件。
阅读全文