C++中是否有类似于 C# @ "Text" 或 Python " " "Text" "" 的干净延续行?
Is there a clean continuation line in C++ similar to C# @"Text" or Python """Text"""?
例如,用于复制/粘贴,编写非常方便
C#
@"
SELECT * FROM ......
WHERE X = (SELECT Y FROM .....)
AND M IN ('1','2','3')
";
或
Python:
"""
SELECT * FROM ......
WHERE X = (SELECT Y FROM .....)
AND M IN ('1','2','3')
"""
比:
C++
"SELECT * FROM ......
WHERE X = (SELECT Y FROM .....)
AND M IN ('1','2','3')"
有什么方法可以避免C++中的\样式以及C#或python样式的方法吗?
谢谢。
C++(以及C)会自动连接相邻的字符串文字。不需要具有字符串文字的。例如,此
const char *p = "Hello" "World"
"!";
相当于
const char *p = "HelloWorld!";
在你的情况下,你可以简单地进行
"SELECT * FROM ...... "
"WHERE X = (SELECT Y FROM .....) "
" AND M IN ('1','2','3')"
结果将与您使用的原始版本等效,即将生成一个连续的字符串文字。
不过,这不会在连接的段之间插入换行符或任何其他额外的空白。如果你需要这样的东西,你必须记得自己做。
我认为C++11允许在原始字符串文本中使用换行符,例如:
const char *query = R"(SELECT * FROM ......
WHERE X = (SELECT Y FROM .....)
AND M IN ('1','2','3'))";
源中的每一个换行符都应该在执行字符串文字中产生一个换行。原始字符串文字通常采用R"( ... )"
的形式。对于GCC,这至少需要4.5版本,而对于clang++,它需要3.0版本。或者,您可以使用自定义分隔符来更容易地消除字符串末尾的歧义:
const char *query = R"XXXX(SELECT * FROM ......
WHERE X = (SELECT Y FROM .....)
AND M IN ('1','2','3'))XXXX";
相关文章:
- 使用 sf::Text 数组时崩溃
- 函数参数延续
- 为什么 sf::Text 显示点而不是数字?
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 为 g++ build 设置超时,为 Sublime Text 运行?
- 编辑期间的 QTableWidgetItem text() 属性
- 如何找到目标文件 *.o 的 ram rom 使用情况(.bss .text .rodata .data)?
- 在 Linux 上编译 - 在函数 '_start' 中:(.text+0x20):对 'main' 的未定义引用
- 在c++中的复制构造函数/一个声明语句中的初始化的延续中使用chain方法
- 当我尝试绘制 sf::Text 对象时,SFML 中的分段错误
- 在 .text 部分中定义只读数据的原因是什么?
- C++内联编译时延续
- (.text+0x20):对"主要"的未定义引用是什么意思
- 如何使用Stroustrup的Fltk Text类调用变量?
- 带有定制 GLFW 二进制 /usr/bin/ld 的 Centos 7: /usr/local/lib/libglfw3.a(init.c.o):".text"部分中无法识别的重定位 (0x2a)
- 从emxArray_uint8_T检测到错误:.text+0xc1):未定义对"emxInit_uint8_T1(emxArray_uint8_T**, int)"的引用?
- Poco c++ 如何从PostgreSQL DB读取"text"数据类型?
- crt1.o:在函数"_start"中:(.text+0x20):对"main"的未定义引用
- BOOST :: Future延期延续的持续僵局
- C++中是否有类似于 C# @ "Text" 或 Python " " "Text" "" 的干净延续行?