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上。
答案 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 *字符串,这不是你想要的。