c++ - 为 SQlite 将 wstring 转换为 const char * 的函数

标签 c++ visual-studio-2010 sqlite wstring

如问题所述,将 wstring 转换为 const char * 的合适模板函数是什么?我的程序完全是用 Unicode 编写的,但是,SQlite 的大部分功能都需要 const char *。

我在msdn上找到了这样做的方法,在这里:http://msdn.microsoft.com/en-us/library/ms235631%28v=vs.80%29.aspx , 其中 name 是一个字符串。

// Convert to a char*
    size_t origsize = wcslen(name.c_str()) + 1;
    const size_t newsize = 100;
    size_t convertedChars = 0;
    char nstring[newsize];
    wcstombs_s(&convertedChars, nstring, origsize, name.c_str(), _TRUNCATE);

最佳答案

您应该使用 *16 sqlite 函数(例如 sqlite3_prepare16),您可以在其中提供 UTF-16(即 wstring)作为参数。不要忘记使用 2*wcslen 作为字符串的长度。如果您坚持使用 const char* 函数,则必须先转换为 UTF-8。

关于c++ - 为 SQlite 将 wstring 转换为 const char * 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635046/

相关文章:

c# - 以编程方式为 MySQL 数据库安装驱动程序

ruby-on-rails - 将 sqlite3 文件移动到新服务器

android - 关于未在 android sqlite 中调用的升级方法

c++ - 结构字段访问

c++ - 为什么这个按位运算的 if 语句的变化会导致错误?

c++ - 升压信号连接管理

wpf - 类型工具箱:BusyIndicator was not found

c++ - std::abs 为 "unsigned long long int"数据类型

c++ - 直接内存访问,使用指向地址的指针

android - 如何从 android 的 sqlite 表中删除列?