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

Замена группы символов в строке! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как отключить или убрать иконку выхода [x] ? http://www.cyberforum.ru/cpp-beginners/thread643247.html
Как отключить или убрать иконку выхода ? В интернете нарыл много информации и на просторах киберфорума тоже, но она мне никак не помогла. У меня Visual Studio 2010
C++ Конкатенация строк Частью задания является реализовать функцию strcat. Возникает какая-то ошибка (см.фото). 1.Вы могли бы подсказать в чём ошибка? 2.Не по теме: как можно улучшить функцию read? Вот код: //read char *Read(void){ size_t size = 32; //первоначальный размер строки http://www.cyberforum.ru/cpp-beginners/thread643215.html
C++ Создание библиотек DLL
Пишу в Dev-C++. Хочу создать DLL - библиотеку. Помогите разобраться в последовательность написания библиотеки DLL.
C++ Статическая линковка: несовместимые параметры командной строки "/clr:pure" и "/MTd"
Я залинковал так: Проект-Свойства-Свойства конфигурации-Общие-Использование MFC - Поставил на ст. Теперь не компилируется: 1>cl : командная строка error D8016: несовместимые параметры командной строки "/clr:pure" и "/MTd" Добавлено через 54 секунды там "/clr: pure... :):):)
C++ Сколько раз слово встречается в предложении http://www.cyberforum.ru/cpp-beginners/thread643190.html
Здравствуйте уважаемые программисты. Помогите решить задачу или хотя бы намётки дайте. "Для каждого из слов заданного предложения указать, сколько раз оно встречается в предложении."
C++ Как узнать пространство имен? Здравствуйте, возникла ситуация, при которой нужно явно указать, к какому пространству имен относится функция Ellipse. Я только начал изучать winapi, и возникла ситуация, что мой подключенный класс носит такое же имя - Ellipse. Гуглил инфу, подставлял и gdi:: и gdiplus:: и другие ругательства, угадать не получилось. Я понимаю, что такую ситуацию можно избежать, но хотелось бы узнать, как... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
05.09.2012, 09:36     Замена группы символов в строке!
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <numeric>
#include <string>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
void  to_replace_not_smaller_than_n_identical_symbols_with_ellipsis
    (
        int     n,
        T_str&  s
    )
{    
    T_str   adj_diff_str(s);
    std::adjacent_difference
        (
            s.begin(),
            s.end(),
            adj_diff_str.begin()
        );
    
    T_str::size_type    zero_arr_begin_pos  =   s.size() - 1;
    T_str::size_type    zero_arr_end_pos    =   s.size() - 1;
 
    const char  SYMBOL_WITH_ZERO_VALUE      =   0;
    const T_str ELLIPSIS_STR                =   "...";
 
    while
        (
                (
                    zero_arr_end_pos   =   adj_diff_str.find_last_of       
                                                (
                                                    SYMBOL_WITH_ZERO_VALUE,
                                                    zero_arr_begin_pos
                                                )            
                )    
            !=  T_str::npos
        )
    {
        zero_arr_begin_pos  =   adj_diff_str.find_last_not_of
                                    (
                                        SYMBOL_WITH_ZERO_VALUE,
                                        zero_arr_end_pos                                        
                                    );
 
        int     quantity_of_identical_symbols   =   zero_arr_end_pos - zero_arr_begin_pos + 1;        
 
        if( quantity_of_identical_symbols >= n )
        {
            s.replace
                (
                    zero_arr_begin_pos,
                    quantity_of_identical_symbols,
                    ELLIPSIS_STR                    
                );        
        }        
    }//while    
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    T_str   s   =   "a1b22c333d4444e55555f666666g7777777h88888888i999999999";
    std::cout   <<  s
                <<  std::endl;
 
    to_replace_not_smaller_than_n_identical_symbols_with_ellipsis
        (
            3,
            s
        );
 
    std::cout   <<  s
                <<  std::endl;
}
 
Текущее время: 03:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru