修改包含“ \”

时间:2019-03-26 15:55:11

标签: c++ qt qstring

我正在尝试修改QString。我要修改的Qstring是

"\002"

但是,当我尝试对其进行修改时,该字符串要么被完全删除,要么未显示任何更改。

我尝试过

String.split("\"");
String.remove("\"");
String.remove(QChar('\'');

出于某种原因,Qt要求我添加一个额外的“或”以进行编译而不产生错误

我现在有这个

string = pointer->data.info.get_type();

根据调试器返回“ \ 002”

string = string.remove(QChar('\''));

删除功能此后什么也不做。

我期望从字符串中删除\,但是要么将其完全删除,要么什么也没有发生。可能是什么问题,如何将Qstring修改为只是数值?

2 个答案:

答案 0 :(得分:6)

您当前正在要求Qt从您的字符串中删除",而不是\。要删除\,您必须escape,就像您逃脱",即remove("\\")一样。

答案 1 :(得分:3)

首先,您的字符串"\002"不包含任何斜杠,引号或撇号。 阅读有关C ++字符串文字的信息。这是escape sequence。 注意\nnn代表任意八进制值!

因此您的文字只包含一个值十进制值2的字符!这是ASCII空间代码,含义:STX(文本的开头)

结果是此代码:

String.split("\"");
String.remove("\"");
String.remove(QChar('\'');

不会拆分或任何内容,因为此字符串不包含引号字符或撇号。它也不会尝试分割或删除斜杠字符,因为这又是一个转义序列,但是种类不同。

现在请记住,调试器以转义的形式向您显示了这些无法打印的字符,以向您显示实际内容。在实时应用程序中,用户将看不到任何东西或一些奇怪的标志符号。