функция для преобразования wstring в const char * для SQlite - PullRequest
1 голос
/ 08 января 2011

как говорится в вопросе, что будет подходящей функцией шаблона для преобразования 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);

1 Ответ

2 голосов
/ 08 января 2011

Вы должны использовать функции * 16 sqlite (например, sqlite3_prepare16), где вы можете указать UTF-16 (т.е. wstring) в качестве параметров. Не забудьте использовать 2 * wcslen в качестве длины строки. Если вы настаиваете на функциях const char *, вам сначала нужно конвертировать в UTF-8.

...