/home/vrv/src/EDSMClient-XC_svn/MainUI3/switch.cpp:83: 错误: ‘QJsonValueRef::toString() const().QString::toStdU16String’ does not have class type memcpy(m_SwitchInfo.szOrgID,data_Object["orgId"].toString().toStdU16String.c_str(),64); ^
时间: 2024-04-07 10:34:02 浏览: 15
这个错误是由于您使用了无效的函数调用导致的。`toStdU16String` 是一个函数,应该使用函数调用运算符 `()` 来调用它,而不是将其视为成员变量。
要解决这个问题,您需要正确地调用 `toStdU16String` 函数,并将其返回的字符串转换为 C 风格的 const char* 字符串。
以下是一个示例代码:
```cpp
#include <QJsonDocument>
#include <QJsonObject>
#include <QString>
// ...
QJsonValue data_Value = /* some JSON value */;
QJsonObject data_Object = data_Value.toObject();
QString orgId = data_Object["orgId"].toString();
std::u16string orgIdU16 = orgId.toStdU16String();
// 使用QString的toUtf8函数将QString转换为C风格的const char*字符串
memcpy(m_SwitchInfo.szOrgID, orgIdU16.c_str(), 64);
```
在上述示例中,我们首先使用 `toObject()` 将 `QJsonValue` 转换为 `QJsonObject`,然后使用下标操作符 `[]` 访问 `QJsonObject` 中的值。接下来,我们使用 `toString()` 函数将其转换为 QString,然后使用 `toStdU16String()` 函数将其转换为 std::u16string 类型。最后,我们使用 `c_str()` 函数将 std::u16string 转换为 C 风格的 const char* 字符串,并使用 `memcpy()` 将其复制到 `m_SwitchInfo.szOrgID` 中。
请注意,在使用上述代码之前,请确保检查并确保 `m_SwitchInfo.szOrgID` 的大小足够容纳所需的字符串长度。