修改包含“\”的QString

问题描述 投票:1回答:2

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

"\002"

但是,当我尝试修改它时,字符串要么被完全删除,要么显示没有变化。

我试过了

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

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

我现在拥有的是这个

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

根据调试器返回“\ 002”

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

删除功能后来没有任何作用。

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

c++ qt qstring
2个回答
6
投票

你现在要求Qt从你的字符串中删除",而不是\。要删除\,你必须escape它,就像你逃脱",即remove("\\")


3
投票

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

所以你的文字只包含一个值十进制值2的字符!这是ASCII空间代码含义:STX(文字开头)

结果这段代码:

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

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

现在请记住,调试器会以转义形式向您显示此不可打印的字符,以显示实际内容。在实时应用程序中,用户将看不到任何或一些奇怪的字形。

© www.soinside.com 2019 - 2024. All rights reserved.