使用Unicode终止符的QString中的访问代码
Access Code in QString with Unicode Terminator
我想制作如下代码。。。有人有主意吗?谢谢:)
QString x = QString("ue001");
if(x.startsWith("ue")) {
//...
}
要获得UTF8,需要更换
QString x = QString("ue001");
带有
QString x = QString(u8"ue001");
首先。
关于检查第一个代码点calue是否以十六进制开头。E: 具有值的代码点
ue???
(每个?都有任何十六进制数字)在UTF8中有以下二进制表示(每个?有1或0):
11101110 10?????? 10??????
假设字节是有效的UTF8,则第一个1110指示接下来的两个字节将以10开始,因此不需要检查这一点。
因此,对于最简单的情况,检查第一个字节(如果字符串不为空等)是否等于0b11101110
,即0xee
就足够了。
不那么简单的情况是,UTF8,尽管有固定的字节顺序,但可以有BOM。如果字符串至少有4个字节,并且前4个字节是
0xef 0xbb 0xbf 0xee
那么检查也完成了。
我有一个来自万维网某处的解决方案:
QString SomeClass::convertStringToUnicode(QString stringCode)
{
int idx = -1;
while( (idx = stringCode.indexOf("\u")) != -1 ) {
int hex = stringCode.mid(idx + 2, 4).toInt(0, 16);
stringCode.replace(idx, 6, QChar(hex));
}
return stringCode;
}
字符串必须以双反斜杠开头。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 访问被拒绝后,c++中的故障保护代码
- 为什么示例代码访问IUnknown中已删除的内存
- 使用 g++7 构建的代码在访问未对齐的内存时崩溃
- 无法访问的代码 在 C++11 中,可能导致这种情况的原因是什么?
- 提供对不同类型的数据(建议、代码审查)的线程安全访问的类
- 无法访问的代码如何导致我的程序崩溃?
- 是否可以访问代码中的调用堆栈?
- C++/CLI访问字符串::来自非CLI代码的格式
- Java 本机访问代码错误:"Invalid memory access"
- 访问C 代码中的PWD
- 我们还能使用任何其他方法来访问Android中的C 代码,而不是使用JNI访问C 代码
- 如何将DLL访问代码从C++移植到C#
- 警告级别4中的不可访问代码警告
- 使用.open()成员函数C++的ifstream数组的错误访问代码
- 在 Apache Cordova for Android 中访问C++代码
- 错误的访问代码 1 glDrawElements
- 外部"C"访问代码的函数
- 访问代码中的Makefile变量
- 使用Unicode终止符的QString中的访问代码