如何在QT中正确逃脱单引号和双引号
How to properly escape single and double quotes in QT?
我试图在qt中自定义scrollbar如下:
const QString name = "scrollbarIssue";
float btn_dimension = 8;
QString source = "::-webkit-scrollbar-button {height:"+ QString::number(btn_dimension) +"px; background: black; display: block;}"
"::-webkit-scrollbar-button:vertical:decrement { background-image: url("data:image/svg+xml;utf8,<svg xmlns=''http://www.w3.org/2000/svg'' width=''"+ QString::number(btn_dimension) +"'' height=''"+ QString::number(btn_dimension) +"'' fill=''%235a6268''><polygon points=''0,50 100,50 50,0''/></svg>"); }"
"::-webkit-scrollbar-button:vertical:increment { background-image: url("data:image/svg+xml;utf8,<svg xmlns=''http://www.w3.org/2000/svg'' width=''"+ QString::number(btn_dimension) +"'' height=''"+ QString::number(btn_dimension) +"'' fill=''%235a6268''><polygon points=''0,0 100,0 50,50''/></svg>"); }";
QString myFuncStr = "(function() {"
" css = document.createElement('style');"
" css.type = 'text/css';"
" css.id = '" + name + "';"
" document.head.appendChild(css);"
" css.innerText = "+ '"'+ source +'"' + ";"
"})()";
in source 变量,我使用两个单语引号逃脱了单引号,我认为这可能会引起问题。
myfuncstr 包含值:
"(function() { css = document.createElement('style'); css.type = 'text/css'; css.id = 'scrollbarIssue'; document.head.appendChild(css); css.innerText = "::-webkit-scrollbar-button {height:8px; background: black; display: block;}::-webkit-scrollbar-button:vertical:decrement { background-image: url("data:image/svg+xml;utf8,<svg xmlns=''http://www.w3.org/2000/svg'' width=''8'' height=''8'' fill=''%235a6268''><polygon points=''0,50 100,50 50,0''/></svg>"); }::-webkit-scrollbar-button:vertical:increment { background-image: url("data:image/svg+xml;utf8,<svg xmlns=''http://www.w3.org/2000/svg'' width=''8'' height=''8'' fill=''%235a6268''><polygon points=''0,0 100,0 50,50''/></svg>"); }";})()"
因此,如果上面的字符串中的功能在浏览器控制台中运行,则会给出以下错误:
untured语法:无效或意外的令牌
任何人都可以帮助如何正确地逃脱QT C 中的单个/双引号?
逃脱带有后斜切的引号:
const auto example = QString("He said "awesome"");
qDebug() << example;
打印:
He said: "awesome"
同样的报价也是如此。有关更多详细信息,请参见此表。
如果您使用的是C 11,则可以使用原始字符串文字:
const auto example = R"He said "awesome"";
您只需要逃脱即可防止字符串的过早端。
因此,在常规的双引号字符串中,您只需要逃脱后斜线(始终(,双引号(和newline(:
QString str = "A string with a \ backslask, "double" and 'single' quotes";
// stackoverflow's code highlighting isn't sophisticated enough for this:
QString str = "A string
spanning two code lines";
在C 单引号中总是代表一个字符,因此您唯一需要逃脱单引号的时间是,如果您是指 cartarat :
char singleQuote = ''';
相关文章:
- 单引号在C++数学编程中是什么意思?
- wcout不会打印正确的单引号
- C++ 中数组(单引号和双引号)的可视常量字符* 与字符
- 使用带有 std::cout 的单引号打印字符串实际上打印了数字
- 匹配外部单引号之间的字符串
- 如何使用C++中不是文字的变量在数字中显示单引号和两个引号?假设 6'2" 英尺
- 正则表达式使用提升令牌迭代器在单引号和括号之间提取值
- 如何在QT中正确逃脱单引号和双引号
- 为什么'char'值必须有单引号而不是双引号?
- C++单引号语法
- 修改正则表达式以包含反斜杠和单引号(以便反斜杠表现为转义字符)
- iSpunct()未检测到单引号字符
- 以C++显示时带有单引号和双引号的不同答案
- 使用 getline() 在单引号中读取
- 在 C# 中将单引号字符串到 uint
- C/C++ 中的单引号、双引号和大小 ('a')
- PQexecParams 使用单引号失败
- 单引号(撇号)要打印到屏幕C++的字母
- C++中的转义序列用单引号括起来,而不是用双引号括起来
- 从字符串c++中删除单引号字符