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

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

Войти
Регистрация
Восстановить пароль
 
zarko97
279 / 39 / 0
Регистрация: 11.10.2015
Сообщений: 405
#1

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

06.06.2017, 01:00. Просмотров 124. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Траблы с кодировками (C++):

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

Работа с кодировками - C++
Всем привет. Есть следующая проблема: есть программа, которая загружает html код страницы с сайта. Затем из этого html кода необходимо...

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

Запись текста в файл разными кодировками - C++
Здравствуйте. Имеется файл. Нужно заменить кусок текста на текст другой кодировки. Как в С++ работать с кодировками? Еще ни разу не...

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

траблы с fstream - C++
Всем привет! Начинаю работать над дз по проге и никак не могу разобраться с одной фишкой с fstream. Вот мои код: #include &quot;stdafx.h&quot; ...

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

Добавлено через 6 минут
Если это tolower() из cctype, то приводи параметр к unsigned char.
0
zarko97
279 / 39 / 0
Регистрация: 11.10.2015
Сообщений: 405
06.06.2017, 01:49  [ТС] #3
nd2, аут оф рэндж
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
06.06.2017, 03:08 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 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
Привет! Вот еще темы с ответами:

Траблы с массивом - C++
Помогите решить: Дан массив вещественных чисел X=(x1,x2,..,xn). Записать элементы заданного массива Х в массив Y следующим образом: в...

C++ траблы с вводом - C++
Как бы так описать проблемку... Как можно сделать ввод с клавиатуры от 0 до 5 цифр? Важно что число заранее не известно, т.е. может и...

траблы с сортировкой - C++
вот собственно задание первые два я сделал, а третье чет с косяком =\ в одномерном массиве, состоящем из n вещественных элементов,...

Траблы с ресайзингом вектора - C++
Я создал вектор моего класса std::vector&lt;CustomClass&gt; myClass; и через цикл заполняю его: Но при ресайзинге вектора, что бы добавить...


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

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

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