提问人:Andrew Truckle 提问时间:7/4/2022 最后编辑:Andrew Truckle 更新时间:7/5/2022 访问量:56
为什么使用 tinyxml2-ex::text 会返回损坏的文本?
Why is using tinyxml2-ex::text returning corrupted text?
问:
我正在尝试使用 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;
}
答:
0赞
Andrew Truckle
7/5/2022
#1
库作者解释道(GitHub 讨论:
这是因为(参见第 465 行)这样做:
tixml2ex::text
tixml2ex.h
if (auto value = element -> GetText())
return std::string (value);
这将损坏任何包含 ASCII 127 之外字符的字符串。
下一个:TinyXML2 在启动时失败
评论