【问题标题】:function to convert wstring to const char * for SQlite将 wstring 转换为 SQlite 的 const char * 的函数
【发布时间】:2011-06-05 19:45:42
【问题描述】:

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

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

// 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);

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 如果您正在编写跨平台应用程序,请注意wchar_t 不一定是 UTF-16 代码单元。当然,它是在 Windows 上。
    • 为什么我需要将字符串的长度乘以2?
    • 因为 wcslen 给出了 wchar_t 字符的长度,即 2 个字节,而 sqlite 想要的长度是字节。
    猜你喜欢
    • 2012-05-31
    • 2018-01-14
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多