我正在尝试修改QString。我要修改的Qstring是
"\002"
但是,当我尝试对其进行修改时,该字符串要么被完全删除,要么未显示任何更改。
我尝试过
String.split("\"");
String.remove("\"");
String.remove(QChar('\'');
出于某种原因,Qt要求我添加一个额外的“或”以进行编译而不产生错误
我现在有这个
string = pointer->data.info.get_type();
根据调试器返回“ \ 002”
string = string.remove(QChar('\''));
删除功能此后什么也不做。
我期望从字符串中删除\,但是要么将其完全删除,要么什么也没有发生。可能是什么问题,如何将Qstring修改为只是数值?
答案 0 :(得分:6)
您当前正在要求Qt从您的字符串中删除"
,而不是\
。要删除\
,您必须escape,就像您逃脱"
,即remove("\\")
一样。
答案 1 :(得分:3)
首先,您的字符串"\002"
不包含任何斜杠,引号或撇号。
阅读有关C ++字符串文字的信息。这是escape sequence。
注意\nnn
代表任意八进制值!
因此您的文字只包含一个值十进制值2
的字符!这是ASCII空间代码,含义:STX
(文本的开头)
结果是此代码:
String.split("\"");
String.remove("\"");
String.remove(QChar('\'');
不会拆分或任何内容,因为此字符串不包含引号字符或撇号。它也不会尝试分割或删除斜杠字符,因为这又是一个转义序列,但是种类不同。
现在请记住,调试器以转义的形式向您显示了这些无法打印的字符,以向您显示实际内容。在实时应用程序中,用户将看不到任何东西或一些奇怪的标志符号。