使用特殊字符将mysqlx :: Value转换为std :: string

时间:2019-03-07 00:12:08

标签: c++ mysql c++11

我正在尝试转换mysqlx :: Value类型,该类型应为字符串,但其中包含特殊的非标准语言字符。我需要将其作为std :: string或等效名称来处理。

我正在使用mysql C ++ Connector XDevAPI检索数据。

mysqlx::Session sess(_db_conn_info.db_host, _db_conn_info.db_port, _db_conn_info.db_user, _db_conn_info.db_pass);
    mysqlx::Schema db = sess.getSchema(_db_conn_info.db_name);

    mysqlx::Table artist_table = db.getTable("Artist");
    mysqlx::RowResult artist_result = artist_table.select("id", "a_id", "name", "is_australian")
        .where("id like :artist_id").bind("artist_id", artist_id).execute(); 

mysqlx::Row row = artist_result.fetchOne();

row [2]值中的名称列有时可以包含以下字符:é或í

我想将mysqlx :: Value结果传递给std :: string对象或类似对象。 注意:当字符串不包含特殊字符时,此方法可以正常工作。

我尝试使用字符串流,但是当字符串包含特殊字符时出现“ CDK错误:字符串转换错误”。

std::stringstream name;
name << row[2]; // Exception throws here

编辑:ubuntu 18.04,gcc 7.3.0

1 个答案:

答案 0 :(得分:0)

结果是我使用的是mysql-cpp-connector版本,该版本具有utf8mb4字符编码的已知错误。 (/将头发撕掉),升级后将其修复。

相关问题