Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
1

Траблы с кодировками

06.06.2017, 01:00. Просмотров 735. Ответов 3
Метки нет (Все метки)

Задание звучит так: из заданной строчки вывести слова, в которых нет повторных букв
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
struct IsGoodString : public std::unary_function<std::string, bool>
{
    bool operator()(std::string& s) {
        std::vector<int> alpha(33, 0);
        for (auto itr = s.cbegin(); itr != s.cend(); ++itr) {
            if (++alpha[std::tolower(*itr) - 'а'] > 1)
                return false;
        }
        return true;
    }
};
 
int main() 
{
     std::locale().global(std::locale("rus"));
     std::string input_string {"Во время медового месяца Доминика Торетто и Летти Ортис в Гаване, \
                                       Доминик бросает вызов в уличной гонке на автошоу местного гонщика Фернандо. \
                                       Доминик берет машину своего двоюродного брата, которую Фернандо хотел забрать за неуплату \                                          
                                       долга. После непростой победы в гонке автомобиль Доминика падает в море."};
     std::vector<std::string> tokens;
     boost::algorithm::split_regex(tokens, input_string, boost::regex("((\\.{3})|:|\\.|\\?|!|;|,|\\s+)+"));
     std::copy_if(tokens.begin(), tokens.end(), std::ostream_iterator<std::string>(std::cout, "\n"), IsGoodString());
     return 0;
}
На русском тексте происходит крэш в if (++alpha[std::tolower(*itr) - 'а'] > 1) этой строчке
На англ. все ОК
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2017, 01:00
Ответы с готовыми решениями:

Работа с кодировками
Всем привет. Есть следующая проблема: есть программа, которая загружает html...

Проблемы с кодировками
Имеется имя файла, считанное с текущей директории (папки Windows). В имени...

Запись текста в файл разными кодировками
Здравствуйте. Имеется файл. Нужно заменить кусок текста на текст другой...

Работа с кодировками файла (АНСИ и ЮТФ-8)
Всем здрасти! Подскажите пожалуйста, каким образом можно реализовать...

Делаю игру на русском, но возникла непонятка с кодировками
Делаю игру на русском языке по нахождению антонимов. Использую setlocale, но...

3
nd2
2838 / 2405 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
06.06.2017, 01:20 2
Цитата Сообщение от zarko97 Посмотреть сообщение
На русском тексте происходит крэш в if (++alpha[std::tolower(*itr) - 'а'] > 1) этой строчке
Пишет что?

Добавлено через 6 минут
Если это tolower() из cctype, то приводи параметр к unsigned char.
0
zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
06.06.2017, 01:49  [ТС] 3
nd2, аут оф рэндж
0
nd2
2838 / 2405 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
06.06.2017, 03:08 4
Лучший ответ Сообщение было отмечено zarko97 как решение

Решение

Цитата Сообщение от zarko97 Посмотреть сообщение
аут оф рэндж
C++
1
if (++alpha[std::tolower((unsigned char)(*itr)) - (unsigned char)'а'] > 1)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2017, 03:08

Траблы с cin.get
Народ, почему в условии в cin.get (!'\n') выдаёт ошибку while (!(cin &gt;&gt; v)||...

траблы с fstream
Всем привет! Начинаю работать над дз по проге и никак не могу разобраться с...

Траблы с зацикливанием в while
народ, помогите на цикле while идет зацикливание #include &quot;stdafx.h&quot; #include...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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