我正在学习qtsql但在qtsql :: query.exec()中遇到过这个qtstring
我以前在C ++中从未见过这个字符串。
有人可以解释为什么有很多报价吗?怎么读这个?这是一个字符串还是五个字符串?如果有五个字符串,为什么中间没有逗号分隔符? query.exec也期待一个const& QTstring。因此,如果这是一个字符串,是否与“create table person(id integer primary key,firstname varchar(20),lastname varchar(30),age integer)”相同?“
ret = query.exec("create table person "
"(id integer primary key, "
"firstname varchar(20), "
"lastname varchar(30), "
"age integer)");
提前致谢。
它没有编译,因为我收到此错误
[100%]构建CXX对象CMakeFiles / utest_main.dir / utest_main.cpp.o /Users/chen/GitRepo/TickDatabase/utest_main.cpp:在函数'int main()'中:/ Users / chen / GitRepo / TickDatabase / utest_main.cpp:25:错误:未在此范围内声明'firstname'/Users/chen/GitRepo/TickDatabase/utest_main.cpp:25:错误:未在此范围内声明'lastname'/ Users / chen / GitRepo / TickDatabase / utest_main.cpp:25:错误:'age'未在此范围中声明make [2]: * [CMakeFiles / utest_main.dir / utest_main.cpp.o]错误1 make [1]: * [CMakeFiles / utest_main.dir / all]错误
但它看起来也不像是一个错误,因为这两个网站都引用了这种语法:
http://www.developer.nokia.com/Community/Wiki/CS001505_-_Creating_a_database_table_in_Qt
http://doc.qt.nokia.com/stable/sql-cachedtable.html
有人有任何想法吗?
答案 0 :(得分:1)
如果两个字符串文字只用空格分隔,那么它们会连接成一个字符串。如果我没弄错的话,这是C和C ++标准的一部分。
修改可以找到C的标准here。相关部分是第6.4.5节(恰当地命名为“字符串文字”),第4段。我引用:
在翻译阶段6中,指定的多字节字符序列 任何相邻字符序列和宽字符串文字标记都是 连接成一个多字节字符序列。
在第7段后面他们有一个例子:
示例这对相邻的字符串文字
"\x12" "3"
生成包含两个字符串的单个字符串文字 值为'\ x12'和'3'的字符,因为转义序列 只是转换为执行字符集的单个成员 在相邻的字符串文字串联之前。
C ++标准中应该有相似的文字,但我还没有,所以不能说哪个部分。
编辑2 查看问题中的错误,我会说在真实来源的某处有一个缺失或额外的双引号"
。
答案 1 :(得分:0)
这是一个单独的字符串,表示"create table person (id integer primary key, firstname varchar(20), lastname varchar(30), age integer)"
。但是你可以看到它进入一条线太长了。因此,使用""
(打开/引用结束引号)将其拆分为多个字符串。在这种情况下,您可以在代码中的字符串内使用换行符以提高其可读性。如果您不插入这些字符并使用换行符拆分字符串,则代码将无法编译。