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

发布于 2024-10-11 00:56:10 字数 586 浏览 10 评论 0原文

正如问题所说,将 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);

as the question says, what would be a suitable template function to convert wstring to const char *? My program is written entirely in Unicode, however, SQlite requires const char * for most of their functions.

I found the method of doing this on msdn, here: http://msdn.microsoft.com/en-us/library/ms235631%28v=vs.80%29.aspx, where name is a 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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凑诗 2024-10-18 00:56:10

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

You should use the *16 sqlite functions (e.g. sqlite3_prepare16) where you4 can give UTF-16 (i.e. wstring) as parameters. Don_t forget to use 2*wcslen as length of the string. If you insist on the const char* functions, you have to convert to UTF-8 first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文