首页 > 解决方案 > 将“\”字符附加到 QString

问题描述

我有一个接收字符串 ex 的函数。"rn"我需要将字符附加到'\'字符串的每个字母以获得"\r\n". 为了附加'\'字符,我需要用一个额外的 来转义它'\',但是这给了我错误的字符串。

例如:

QString s = "rn";
QString n = QString("\\%1\\%2").arg(s[0]).arg(s[1]);
qDebug() << n.compare("\r\n");

输出 79 而不是 0。我需要与第一个字符串相同,"\r\n"但我不确定如何正确附加'\'字符。

标签: c++qtescapingqstring

解决方案


"\\"您可以为 each编写'\',将 int 类型转换92为 char,或附加'\\'(已经是 char)

这是必要的,因为\它是类 C 语言和大多数其他语言中字符串的转义字符,因此会导致它的显示方式和表示方式之间出现问题

为了说服自己它是一样的,你可以/用其他方式显示,例如二进制或十六进制

#include <stdio.h>

int main()
{
  printf("%c\n", '\\');
  printf("%04x\n", '\\');  // display hex
  printf("%04x\n", "\\"[0]);
  printf("%04x\n", 92);
  return 0;
}
% g++ test.py && ./a.out
\
005c
005c
005c

推荐阅读