无法将const wchar_t *转换为const char *

时间:2017-05-24 04:11:19

标签: c++11 data-conversion

ALL,

有人可以向我解释为什么这段代码:

std::wstring query1 = L"SELECT....";
res = mysql_query( m_db, m_pimpl->m_myconv.from_bytes( query1.c_str() ).c_str() );

给我一​​个错误的主题?

我在C ++选项中定义了-DUNICODE

我想我只需要一双新鲜的眼睛。

谢谢。

使用gcc5.4在Gentoo Linux上。

1 个答案:

答案 0 :(得分:1)

这是一种将unicode宽字符串转换为const char *

的方法
char query_cstr[100];
size_t charsConverted;

wchar_t* unicode_query = L"SELECT * FROM table;";

wcstombs_s(&charsConverted, query_cstr, unicode_query, wcslen(unicode_query));

const char* query_const = query_cstr;

//Use query_const inside of mysql_query now that it's been converted to a const char*

由于各种原因,我使用语言环境功能遇到了麻烦。转换unicode时,wcstombs_s()使事情变得容易一些。在std :: wstring对象上使用c_str()将产生一个const wchar_t *字符串,这不是你想要的。