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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.94
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
#1

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

22.06.2011, 02:35. Просмотров 4200. Ответов 3
Метки нет (Все метки)

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 символов, мб у кого есть наработки такой ф-ции или более разумное решение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2011, 02:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевести Unicode строку в ANSI (C++):

ANSI to Unicode - C++
Hi all. Вопрос к экспертам :) Хочу сохранить строку текста (кириллица) в текстовый файл. Строка в ANSI, а нужно сконвертировать в...

ANSI и UNICODE - C++
#include <iostream> #include <windows.h> using namespace std; int main(){ TCHAR j; return 0;

ANSI to Unicode - C++
Всем доброго времени суток! Есть задачка преобразовать строку в cp1251 в строку в unicode и сохранить ее в файл в кодировке unicode...

Перевод из Unicode в ANSI - C++
Привет! При переводе из Unicode в ANSI юзаю вот эти две функции: CharToOemW и OemToCharA. Первая переводит из Unicide в Oem, а вторая - из...

Как конвертировать Unicode в Ansi? - C++
Я написал свою функцию конвертирования из Unicode в Ansi, но она не правильно кодирует символы русского языка. Как такое исправить? ...

Перевод из unicode в ansi и utf8 - C++
Подскажите, пожалуйста, как перевести unicode строку в ansi и utf8? Добавлено через 7 часов 32 минуты Никто не знает?:(

3
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
22.06.2011, 02:41 #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);
}
0
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
22.06.2011, 13:40  [ТС] #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 )
0
xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,174
Записей в блоге: 1
10.08.2011, 11:43 #4
Обясните пожалуйста как перевести строку из Unicode в String(Ansi), название темы понятное а вот кода и обяснения я тут что то не вижу
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2011, 11:43
Привет! Вот еще темы с ответами:

Unicode, UTF-8 и ANSI в одном консольном приложении. Можно ли "на лету" конвертировать массив строк? - C++
Всем доброго дня) Подскажите такую весчь: можно ли в консольном приложении работать с несколькими кодировками? Нужно считать файлик в...

Как перевести символы из ASCII в ANSI - C++
Читаю файл который в ASCII нужно переконвертить его в ANSI. Что делать??? Помогите, третий день мучаюсь...

Перевести десятичное число в unicode - C++
Есть программа, вводим десятичное число до 10 000 и отображает символ. Однако, когда ввожу, например 800 - пусто, 801 тоже ничего. С 880...

Не вводятся символы в unicode строку - C++
#include "stdafx.h" #include <iostream> #include <windows.h> using namespace std; int main() { setlocale(LC_ALL,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
10.08.2011, 11:43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru