【发布时间】:2012-12-17 08:32:36
【问题描述】:
我遇到了QByteArray 和QString 的问题。
我正在读取一个文件并将其信息存储在QByteArray 中。该文件是 unicode 格式,因此它包含如下内容:t\0 e\0 s\0 t\0 \0 \0
我正在尝试将此值与我指定的值进行比较,但它失败了,因为在调试器中我看到它不是一个 unicode 字符串。
代码将解释一切:
QByteArray Data; //contains unicode string "t\0 e\0 s\0 t\0 \0 \0"
QString myValue = "test"; //value to compare.
if(Data.contains(myValue))
//do some stuff.
else
//do other stuff.
在调试器中,它显示变量 Data 的值是 "t\0 e\0 s\0 t\0 \0 \0",myValue 的值是 "test"。我该如何解决?
【问题讨论】:
-
请注意,自 Qt 5.0 起字符串处理发生了变化。字符数组在内部被解释为 UTF-8 编码。
QString myValue = "äöü";例如,至少如果它自己的源文件不是以 UTF-8 存储的,则应避免使用。请查看wiki.qt.io/Strings_and_encodings_in_Qt 了解更多信息。
标签: c++ qt qstring qtcore qbytearray