c++ - 将“\”字符附加到 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"
但我不确定如何正确附加'\'
字符。
解决方案
"\\"
您可以为 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
推荐阅读
- flutter - 浏览器和应用栏中的后退按钮在 Flutter Web 开发中不起作用
- ios - 了解一些 NWBrowser 我设法开始工作
- kubernetes - Rancher 使用签名证书设置 RKE
- r - 下载文件时如何让 R 告诉我哪些链接损坏?
- python - 检查某个页面中是否存在 xpath
- java - 无法通过邮递员中的 GET 调用获取 XML 对象
- flutter - 单击底部导航栏时关闭 Flutter 抽屉
- typescript - 如何在不遇到实体类比较问题的情况下将 TypeORM 与热重载一起使用?
- c - 为什么这种竞争条件只出现在 -O3 并且只出现在某个看似等效的代码顺序下?
- python - 无法让我的正则表达式捕获目标