Форум программистов, компьютерный форум CyberForum.ru

Перевести Unicode строку в ANSI - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.94
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
22.06.2011, 02:35     Перевести Unicode строку в ANSI #1
PHP
1
2
3
4
5
6
7
8
9
10
char label_ansi[128];
wchar_t label_wide[512];
 
sprintf_s (label_ansi, "%ls", label_wide);
// работает, но если и когда появляется не-ascii символ - строке капут наступает
 
if( strstr( label_ansi, "mytest" ) != NULL )
{
    found = true;
}
если label_wide = L"mytest hello" например, то found == true, но если labe_wide = L"mytest hello hello" - то found == false

:-(

Пока думаю разве что сделать обертку для подчистки label_wide от всех non-ascii символов, мб у кого есть наработки такой ф-ции или более разумное решение?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2011, 02:35     Перевести Unicode строку в ANSI
Посмотрите здесь:

C++ ANSI и UNICODE
C++ Перевод из Unicode в ANSI
C++ Как перевести символы из ASCII в ANSI
C++ Unicode, UTF-8 и ANSI в одном консольном приложении. Можно ли "на лету" конвертировать массив строк?
ANSI to Unicode C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
22.06.2011, 02:41     Перевести Unicode строку в ANSI #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void   get_ansi(char* hAnsi, BSTR  hUnicode) {
    WideCharToMultiByte(CP_ACP, 0, hUnicode,  -1,  hAnsi,  strlen(hAnsi), 0, 0);
}
 
 
 
 void  main(void){
 
    wchar_t  str[] = L"AppleTalk, Actor, Algol, PL/I, COBOL, FORTRAN...";
 
    char  cnv[64];
    get_ansi(cnv, str);
 
    puts(cnv);
}
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
22.06.2011, 13:40  [ТС]     Перевести Unicode строку в ANSI #3
xAtom,
PHP
1
2
3
sprintf_s (label_ansi, "%ls", label_wide);
// заменил на
get_ansi(label_ansi, (BSTR)label);
эффект точно тот же что и был, - строку колбасит если появляется не-ascii символ, например ф-ция печати в файл печатает:
\nmytest hello \n нормально
а, \nmytest hello hello\n - на букве 'р' русской тупо останавливает печать, и strstr не находит ничего

(и если это важно, wchar_t в этой части кода идет как указатель wchar_t * label_wide )
xTIGRx
 Аватар для xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,169
Записей в блоге: 1
10.08.2011, 11:43     Перевести Unicode строку в ANSI #4
Обясните пожалуйста как перевести строку из Unicode в String(Ansi), название темы понятное а вот кода и обяснения я тут что то не вижу
Yandex
Объявления
10.08.2011, 11:43     Перевести Unicode строку в ANSI
Ответ Создать тему
Опции темы

Текущее время: 15:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru