ALL,
Я получаю некоторые данные из базы данных как char *, а затем преобразую их в std :: wstring, потому что мне нужно передать их функции, которая принимает этот тип:
AddDropTable( m_myconv.from_bytes( catalog_name ).c_str(), m_myconv.from_bytes( schema_name ), /*some other params*/);
Внутри AddDropTable мне нужно преобразовать их обратно в char *, потому что мне нужно получить больше информации. Итак, я делаю:
int MyDb::AddDropTable(const std::wstring &catalogName, const std::wstring &schemaName, /*some other params*/)
{
const char *catalog_name = m_myconv.to_bytes( catalogName.c_str() ).c_str();
const char *schema_name = m_myconv.to_bytes( schemaName.c_str() ).c_str();
}
m_myconv объявлен как:
std::wstring_convert<std::codecvt_utf8<wchar_t> > m_myconv;
Что странно, так это то, что внутри AddDropTable () имя_каталога пусто (в отладчике оно отображается как «») и имя схемы не возвращается должным образом (отладчик говорит: «Ошибка чтения символов строки»).
Это просто обратное преобразование. Почему не получается?
ТИА!