【问题标题】:QString.toInt() doesnt work - Error: invalid operands to binary expression ('const char *' and 'const char [14]')QString.toInt() 不起作用 - 错误:二进制表达式的操作数无效('const char *' 和 'const char [14]')
【发布时间】:2024-01-05 12:31:01
【问题描述】:

我有这个代码:

QString carda = "000123";
QString queryStringAnet("SELECT * FROM [records] WHERE ([user]='" + carda.toInt() + "' AND [apl]='"+apl+"' AND [tasktype]='"+taskType+"' AND [taskkind]='"+taskKind+"' AND [timestamp]='"+timestamp+"')");

当我使用 carda.toInt() 时从 QString 到 Int 的转换我有这个错误:

错误:二进制表达式的操作数无效('const char *' 和 'const char [14]')

和警告:

warning: adding 'int' to a string does not append to the string
use array indexing to silence this warning

我不明白为什么 QString.toInt() 不会工作......有什么想法吗?

【问题讨论】:

    标签: qt type-conversion qt5 qstring


    【解决方案1】:

    我不明白为什么 QString.toInt() 不会工作......有什么想法吗?

    问题是在 qt 中你不能将字符串和数字连接在一起......

    实际上你甚至不需要将字符串 carda 转换为整数,因为那是一个 QString

    而只是这样做:

    QString queryStringAnet("SELECT * FROM [records] WHERE ([user]='" + carda + "' AND [apl]='"+apl+"' AND [tasktype]='"+taskType+"' AND [taskkind]='"+taskKind+"' AND [timestamp]='"+timestamp+"')");
    

    【讨论】:

    • 这甚至不是 Qt,这是 C/C++,添加字符串文字 (char*) 和 int 不起作用。
    • 感谢兄弟的评论...但相信我,qt 有很多方法可以连接奇怪的东西...并且 QStrings 与 std::strings 非常不同¯\_(ツ)_/¯
    • @ΦXocę웃Пepeúpaツ 相反! ;-) qt 有很多方法可以连接奇怪的东西 即使是 Qt 也不能​​(也不应该)重载 const char*int 的二进制加法运算符。 (在 OP 公开的代码中,带有 C 字符串文字和 int 的术语作为 QString 的构造函数的参数给出 - 在 + 中不涉及 QString。)
    最近更新 更多