C ++ const mysqlpp :: String模棱两可的错误

伊恩

我是C ++的新手,刚用C ++用mysql ++。h查询sql数据库

SQL查询本身有效,我可以打印出结果。

char *token;
Query query = conn.query();
query << "SELECT title, description FROM mydb.mytable LIMIT 2";
StoreQueryResult ares = query.store();

for (size_t i = 0; i < ares.num_rows(); i++) {
    cout << "Title: " << ares[i]["title"] << " - Description: " << ares[i]["description"] << endl;
    const char delim[] = "; \t";

    //Error when I add this line
    //token = strtok( ares[i]["description"] , delim);
    //rest of strtok code which works with normal strings, but not mysqlstring
    ...
}

关键问题是我试图用行将描述解析为单词

   token = strtok( ares[i]["description"] , delim);

我得到错误

error: conversion from ‘const mysqlpp::String’ to ‘char*’ is ambiguous

所以我的理解是strtok需要一个char *并且conn返回一个const mysqlpp :: String,我猜这很有意义。但是然后我如何将mysqlpp :: String与其他采用char *的普通函数一起使用?

我一直在这里寻找一些提示,但被卡住了。

我已经尝试过类似的转换。

ares[i]["description"].c_str();

从“ const char *”到“ char *”的无效转换

char * c = ares[i]["description"].c_str()

这给出了类似的错误。

所以我有点迷失了,如何在其他地方使用mysqlpp :: String,用带char *或std :: string的函数使用它的最佳方法是什么?

含糊不清的地方是什么?

斯蒂芬·莱希纳(Stephan Lechner)

strtok会更改您传递的字符串,因为它会0x0在每个令牌后插入字符串终止符因此,您需要一个char*,但c_str返回const char*

如果要使用strtok,则需要获取const char*返回的副本c_str()可能最简单的方法是使用strdup

char* c = strdup(ares[i]["description"].c_str());
token = strtok(c, delim);
...
free(c);

要么:

std::string s = ares[i]["description"].c_str();
char* c = s.data(); // or &s[0] prior to C++17...
token = strtok(c, delim);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

to_string( const /& n) 是模棱两可的

来自分类Dev

C ++继承错误:模棱两可的错误

来自分类Dev

模棱两可的错误:C ++ 11使用可变参数模板多重继承

来自分类Dev

模棱两可的错误:C ++ 11使用可变参数模板多重继承

来自分类Dev

错误C2668:'boost :: bind':对重载函数的模棱两可的调用

来自分类Dev

C ++ 11/14 make_unique std :: string的模棱两可的重载

来自分类Dev

C ++模板,模棱两可的重载

来自分类Dev

C ++ 11 Lambda模棱两可

来自分类Dev

C ++ libconfig模棱两可的重载

来自分类Dev

C ++ typedef继承模棱两可的问题

来自分类Dev

C ++ Cout,Cin和系统“模棱两可”

来自分类Dev

C ++临时类实例模棱两可

来自分类Dev

C ++模板模棱两可的实例化

来自分类Dev

C ++ libconfig模棱两可的重载

来自分类Dev

在C#中返回模棱两可的对象

来自分类Dev

无法传递非平凡可复制类型'const class mysqlpp :: String'的对象

来自分类Dev

从'QTableWidgetItem * const'到'QChar'..或QString的转换是模棱两可的

来自分类Dev

从'QTableWidgetItem * const'到'QChar'..或QString的转换是模棱两可的

来自分类Dev

MSVC-C2668对重载函数的模棱两可的调用-它是编译器错误吗?

来自分类Dev

无法传递非平凡复制类型'const class mysqlpp :: String'的对象

来自分类Dev

mysqlpp中的参考错误

来自分类Dev

C ++中的重载函数为unsigned char和unsigned int导致模棱两可

来自分类Dev

ISO C ++说这些是模棱两可的,运算符重载

来自分类Dev

C ++构造函数与相同键/值类型的std :: map模棱两可

来自分类Dev

C ++构造函数与相同键/值类型的std :: map模棱两可

来自分类Dev

C ++构造函数“模棱两可”-但实际上并非如此

来自分类Dev

C ++中的重载函数为unsigned char和unsigned int导致模棱两可

来自分类Dev

C中的#define指令给出模棱两可的答案

来自分类Dev

(C++) 构造函数,默认参数,“调用重载...模棱两可”

Related 相关文章

  1. 1

    to_string( const /& n) 是模棱两可的

  2. 2

    C ++继承错误:模棱两可的错误

  3. 3

    模棱两可的错误:C ++ 11使用可变参数模板多重继承

  4. 4

    模棱两可的错误:C ++ 11使用可变参数模板多重继承

  5. 5

    错误C2668:'boost :: bind':对重载函数的模棱两可的调用

  6. 6

    C ++ 11/14 make_unique std :: string的模棱两可的重载

  7. 7

    C ++模板,模棱两可的重载

  8. 8

    C ++ 11 Lambda模棱两可

  9. 9

    C ++ libconfig模棱两可的重载

  10. 10

    C ++ typedef继承模棱两可的问题

  11. 11

    C ++ Cout,Cin和系统“模棱两可”

  12. 12

    C ++临时类实例模棱两可

  13. 13

    C ++模板模棱两可的实例化

  14. 14

    C ++ libconfig模棱两可的重载

  15. 15

    在C#中返回模棱两可的对象

  16. 16

    无法传递非平凡可复制类型'const class mysqlpp :: String'的对象

  17. 17

    从'QTableWidgetItem * const'到'QChar'..或QString的转换是模棱两可的

  18. 18

    从'QTableWidgetItem * const'到'QChar'..或QString的转换是模棱两可的

  19. 19

    MSVC-C2668对重载函数的模棱两可的调用-它是编译器错误吗?

  20. 20

    无法传递非平凡复制类型'const class mysqlpp :: String'的对象

  21. 21

    mysqlpp中的参考错误

  22. 22

    C ++中的重载函数为unsigned char和unsigned int导致模棱两可

  23. 23

    ISO C ++说这些是模棱两可的,运算符重载

  24. 24

    C ++构造函数与相同键/值类型的std :: map模棱两可

  25. 25

    C ++构造函数与相同键/值类型的std :: map模棱两可

  26. 26

    C ++构造函数“模棱两可”-但实际上并非如此

  27. 27

    C ++中的重载函数为unsigned char和unsigned int导致模棱两可

  28. 28

    C中的#define指令给出模棱两可的答案

  29. 29

    (C++) 构造函数,默认参数,“调用重载...模棱两可”

热门标签

归档