如何将SQLite3查询结果列转换为C++字符串?
将SQLite3查询结果转换为C++ string的简便方法
sqlite3_column_text返回的是const char*类型,C++的std::string本身就支持直接用这个指针构造,这是最简便的实现方式:
const char* colText = reinterpret_cast<const char*>(sqlite3_column_text(dbResult, 1)); std::string colStr(colText);
关键注意事项
- 空指针处理:如果查询的列值为NULL,sqlite3_column_text会返回NULL,直接构造string会触发未定义行为,建议先做判断:
const char* colText = reinterpret_cast<const char*>(sqlite3_column_text(dbResult, 1)); std::string colStr; if (colText != nullptr) { colStr = colText; } else { // 按需处理NULL值,比如设为空字符串或自定义默认值 colStr = ""; } - 编码兼容:sqlite3_column_text默认返回UTF-8编码的字符串,
std::string可以直接存储UTF-8字节序列,若后续需要转宽字符(如wstring)再单独处理即可。 - 指针生命周期:sqlite3_column_text返回的指针仅在当前查询结果集(
dbResult)未被sqlite3_finalize销毁前有效,务必在销毁结果集前完成string的构造。
内容的提问来源于stack exchange,提问作者cShellPro
相关产品推荐
相关产品推荐

