C++ C+中是否有干净的续行+;类似于“C”;“文本”;或Python“&引用&引用;“文本”&引用&引用;?
例如,出于复制/粘贴目的,编写以下内容非常方便: C# 或 蟒蛇: 比: C++ <> P>是否有任何方式避免C++中的“风格”和C语言或Python风格? 谢谢。C++(以及C)自动连接相邻的字符串文本。不需要使用字符串文本的C++ C+中是否有干净的续行+;类似于“C”;“文本”;或Python“&引用&引用;“文本”&引用&引用;?,c++,C++,例如,出于复制/粘贴目的,编写以下内容非常方便: C# 或 蟒蛇: 比: C++ P>是否有任何方式避免C++中的“风格”和C语言或Python风格? 谢谢。C++(以及C)自动连接相邻的字符串文本。不需要使用字符串文本的\。例如,这个 const char *p = "Hello" "World" "!"; 相当于 const char *p = "HelloWorld!"; 在你的情况下,你可以简单地做 "SELECT * FROM ...... " "WHERE X = (
\
。例如,这个
const char *p = "Hello" "World"
"!";
相当于
const char *p = "HelloWorld!";
在你的情况下,你可以简单地做
"SELECT * FROM ...... "
"WHERE X = (SELECT Y FROM .....) "
" AND M IN ('1','2','3')"
结果将与原始版本的\
相同,即将生成一个连续字符串文本
但这不会在连接的线段之间插入换行符或任何其他额外的空白。如果您需要这样的东西,您必须记住自己做。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";
我认为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";
原始SQL文本总是一个坏主意。我收到的答案和建议可能会导致重复,-谢谢似乎C++不可能模仿像我所描述的C或Python样式。(@Tristan:C++11中有一些可以使用的原始字符串文本。但是,我不知道您使用的编译器是什么,因为并非所有的编译器都支持它。另一个重复-带有一个原始字符串文本示例:原始SQL文本总是一个坏主意。根据我收到的答案和建议,可能重复-谢谢!-似乎是imC++可能模仿C++或Python样式,如我所描述的:-(@特里斯坦:在C++ 11中有可以使用的原始字符串文字。但是,我不知道你使用的编译器是什么,因为不是所有编译器都支持它。另一个DUPE—用原始字符串文字例子:谢谢安德烈,这里的问题(在这种情况下)我不能复制/粘贴sql命令并立即执行它,我必须先删除中间引号。这就是我问题的核心。很难说这种方法比使用反斜杠更好:现在你必须在末尾添加两个字符,而不是一个额外的字符。但我想它确实算作一个区别@达斯布林克赖特:“至少你不必确定反斜杠是线上最后一个字符”特里斯坦:是的……如果你正在寻找一种方法,只需粘贴一个文本块,而不必做每行后处理,那么,不,标准C++没有任何合适的。@安德烈:这取决于哪个版本O。对于您正在使用的标准。C++11引入了允许换行的原始字符串文本。感谢Andrey,这里的问题(在本例中)我不能复制/粘贴sql命令并立即执行它,我必须先删除中间引号。这就是我问题的核心。很难说这种方法比使用反斜杠更好:现在你必须在末尾添加两个字符,而不是一个额外的字符。但我想它确实算作一个区别@达斯布林克赖特:“至少你不必确定反斜杠是线上最后一个字符”特里斯坦:是的……如果你正在寻找一种方法,只需粘贴一个文本块,而不必做每行后处理,那么,不,标准C++没有任何合适的。@安德烈:这取决于哪个版本O。对于您正在使用的标准,C++11引入了允许换行的原始字符串文本。