Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2011, 10:50   #21
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Сtrl, думаю лучше через map::find, а то тогда придется всю кодовую таблицу реализовывать...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.06.2011, 11:00   #22
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Пепел Феникса, тогда так?
Код:
std::string translit::translate(const std::string src, const translit::dict_t& dict)
{
	std::string result;
	for (std::string::const_iterator iter = src.begin(); iter != src.end(); ++iter)
	{
		char sym = *iter;
		dict_t::const_iterator rep_sym_iter = dict.find(sym);
		if (rep_sym_iter != dict.end())
			result += rep_sym_iter->second;
		else result += sym;
	}
	return result;
}
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 24.06.2011, 11:11   #23
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
И каков Ваш будет положительный ответ?
Код:
#include <locale.h>
...
setlocale(LC_ALL, "Russian");
cout << "И каков будет ваш, Smitt&Wesson, ответ?";
P.S. Чего это вы свой пост удаляете?
Ищете информацию по C++?
cplusplus.com

Последний раз редактировалось Сtrl; 24.06.2011 в 11:13. Причина: Админы, тогда уж и этот удалите, он свой смысл потерял...
Сtrl вне форума Ответить с цитированием
Старый 24.06.2011, 11:13   #24
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Пепел Феникса, тогда так?
да.

Цитата:
И каков Ваш будет положительный ответ?
ответ: неверная кодировка.
обычно кодировка в сорцах 1251, а в консоли(винды, по крайней мере) 866, именно по этому иероглифы.
выведите в файл и откройте блокнотом, или же поставьте консоли верную кодировку.

кстати, вы путаете понятия "закодировать" и "отобразить".
ch вполне себе содержит русский текст, но консоль не может его отобразить верно.
Цитата:
P.S. Чего это вы свой пост удаляете?
Smitt&Wesson, зачем?

Ctrl, clocale, мы же в С++
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.06.2011, 11:16   #25
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Ctrl, clocale, мы же в С++
Не спорю, но в коде на который я отвечал было <iostream.h> вместо <iostream>, так что я подстраховался.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 24.06.2011, 11:21   #26
fomikadze
Пользователь
 
Регистрация: 13.06.2011
Сообщений: 17
По умолчанию

что называется взялся так уж добей:

wcscat(result, val[i]); - отправляет в далёкое плавание [Cannot cast from 'wchar_t' to 'wchar_t *']

что можно сделать с этим?
основной код можно увидеть вверху
fomikadze вне форума Ответить с цитированием
Старый 24.06.2011, 11:22   #27
fomikadze
Пользователь
 
Регистрация: 13.06.2011
Сообщений: 17
По умолчанию

что называется взялся так уж добей:

wcscat(result, val[i]); - отправляет в далёкое плавание [ E2034 Cannot convert 'int' to 'const wchar_t *']

что можно сделать с этим?
основной код можно увидеть вверху
fomikadze вне форума Ответить с цитированием
Старый 24.06.2011, 11:25   #28
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
кстати, вы путаете понятия "закодировать" и "отобразить".
ch вполне себе содержит русский текст, но консоль не может его отобразить верно.
Smitt&Wesson, зачем?

Ctrl, clocale, мы же в С++
Удалил, даже не прочитав сообщений которые написаны ниже, так как сам увидел несоответствие кодировки и отображения. Больше спорить на эту тему не хочется. (С консолям работаю не часто, а тип char, вообще избегаю), поэтому и нестыкняк. В основном использую string и AnsiString.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 24.06.2011, 11:26   #29
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем вы вообще смешиваете корову с собакой?
у функция вам вернет std::string, с ней и работайте по человечески, а не через С.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.06.2011, 11:30   #30
fomikadze
Пользователь
 
Регистрация: 13.06.2011
Сообщений: 17
Печаль

Цитата:
Сообщение от fomikadze Посмотреть сообщение
wcscat(result, val[i]); - отправляет в далёкое плавание [ E2034 Cannot convert 'int' to 'const wchar_t *']
Поясните мне пожалуйста. Вот почему он ругается на эту строчку, хоты есть переменные объявленные точно так же

wchar_t *engArr[2][33] = {...}

и используются так же

wcscat(result, engArr[0][j]);

а на них не ругается.
Что не так?
fomikadze вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск