c++ - 如何在 qsqlquery.exec 中读取这个 qtstring

标签 c++ sql string sqlite

我正在学习 qtsql 但在 qtsql::query.exec() 中遇到了这个 qtstring

我以前在 C++ 中从未见过这个字符串。

有人能解释一下为什么有那么多引文吗?以及如何阅读这个?这是一串还是五串?如果有五个字符串,为什么中间没有像逗号这样的分隔符? query.exec 还需要一个 const & QTstring。那么如果这是一个字符串,它是否与“创建表人(id 整数主键,名字 varchar(20),姓氏 varchar(30),年龄整数)”相同?

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: In function 'int main()':/Users/chen/GitRepo/TickDatabase/utest_main.cpp:25: 错误:在此范围内未声明“名字”/Users/chen/GitRepo/TickDatabase/utest_main.cpp:25: 错误:在此范围内未声明“姓氏”/Users/chen/GitRepo/TickDatabase/utest_main.cpp:25: error: 'age' was not declared in this scope 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

有人知道吗?

最佳答案

如果两个字符串文字仅由空格分隔,则将它们连接成一个字符串。如果我没记错的话,它是 C 和 C++ 标准的一部分。

编辑 C 的标准可以找到here .相关部分是第 6.4.5 节(恰本地命名为“字符串文字”)第 4 段。我引用:

In translation phase 6, the multibyte character sequences specified by any sequence of adjacent character and wide string literal tokens are concatenated into a single multibyte character sequence.

在第 7 段后面有一个例子:

EXAMPLE This pair of adjacent character string literals

"\x12" "3"

produces a single character string literal containing the two characters whose values are '\x12' and '3', because escape sequences are converted into single members of the execution character set just prior to adjacent string literal concatenation.

C++ 标准中应该有类似的文本,但我还没有,所以不能说是哪一节。

编辑 2 查看问题中的错误,我会说在真实来源的某处缺少或额外的双引号 "

关于c++ - 如何在 qsqlquery.exec 中读取这个 qtstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8192977/

相关文章:

sql - SQL Server 中联接子查询的效率

mysql - 将两个具有不同架构的 SELECT 语句的结果 "generated"连接到一个表中

c++ 输入一个字符串——不是用 getline() 而是用 cin

c# - 在 c# 或 c++ 中使用更快的时钟加速应用程序

c++ - 如何使用 doxygen 记录 Fortran 枚举

c++ - 为什么我必须通过this指针访问模板基类成员?

c++ - 如何在调用 fclose() 之前判断流是否在 C 中关闭

mysql - 选择具有完全相同的多对多关联的记录

string - 使用 String() 方法的 Go 接口(interface)

swift - Swift 3 中 var 的默认值