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

std::string и кириллические коды - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.11.2012, 10:34     std::string и кириллические коды #1
дана строка
C++
1
std::string s;
, в ней кириллические символы, надо найти порядковые номера этих символов, согласно алфавиту. Для латиницы
C++
1
2
3
4
5
6
7
8
9
c=s[i];
if ((c>='a')&&(c<='z'))
{
 code=((size_t ) c)-((size_t ) 'a')+1;
}
if ((c>='A')&&(c<='Z'))
{
 code=((size_t ) c)-((size_t ) 'A')+1;
}
работает, а для кириллицы
C++
1
2
3
4
5
6
7
8
9
c=s[i];
if ((c>='а')&&(c<='Я'))
{
 code=((size_t ) c)-((size_t ) 'а')+1;
}
if ((c>='А')&&(c<='Я'))
{
 code=((size_t ) c)-((size_t ) 'А')+1;
}
не фурычит.

Добавлено через 1 час 0 минут
Тест показал, что проблема не здесь, а во вводе.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2012, 10:34     std::string и кириллические коды
Посмотрите здесь:

C++ запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’
C++ Здравствуйте! Создал класс std::string. Не создается объкт типа string... Подскажите в чем причина?
Ошибка: отсутствует оператор ">>"; типы операндов: std::istream >> std::string C++
C++ ошибка в программе (cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*')
C++ std::string + std::remove
C++ Как правильно перевести std::wstring в std::string ?
C++ Как привести std::wstring к std::string?
C++ Std::string and std::wstring convert

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1438 / 652 / 86
Регистрация: 03.06.2009
Сообщений: 3,295
Завершенные тесты: 1
07.11.2012, 12:27     std::string и кириллические коды #2
Потому что при вводе с консоли кирилица вводится в кодировке CP866, а в исходном тексте 'А' - в кодировке 1251.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
c=s[i];
if ((c>=0xa0)&&(c<=0xaf))
{
 code=((size_t ) c)-((size_t )0xa0)+1;
}
if ((c>=0xe0)&&(c<=0xef))
{
 code=((size_t ) c)-((size_t )0xe0)+1;
}
if ((c>=0x80)&&(c<=0x9f))
{
 code=((size_t ) c)-((size_t ) 0x80)+1;
}
Не проверял!
Yandex
Объявления
07.11.2012, 12:27     std::string и кириллические коды
Ответ Создать тему
Опции темы

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