为什么使用tinyxml2-ex:文本返回的文本?



我正在尝试使用tinyxml2-ex库读取一些XML数据。

当我尝试使用它的特定API调用:

const CString strNameToUse(tinyxml2::text(pAssign).c_str());

生成的字符串会丢失重音等内容。最后,我已经恢复了我对UTF8处理的原始方法:

const CString strNameToUse(CA2CT(pAssign->GetText(), CP_UTF8));

这很好。有人知道为什么tinyxml2-ex::text方法失败了吗?注意,允许使用tinyxml2命名空间。


所引用的库正在使用std::string,并且这样做:

// helper function to get element text as a string, blank if none
inline std::string text (const XMLElement * element)
{
if (!element)
throw XmlException ("null element"s);
if (auto value = element -> GetText())
return std::string (value);
else
return ""s;
}

库作者解释(GitHub讨论:

这是因为tixml2ex::text(参见tixml2ex.h中的第465行)这样做:

if (auto value = element -> GetText())
return std::string (value);

将腐败以外的任何字符串包含字符的ASCII 127。

最新更新