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

Делаем регулярные выражения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Замена группы символов в строке! http://www.cyberforum.ru/cpp-beginners/thread643267.html
Вводится строка, заменить группу более трёх одинаковых символов многоточием(тремя точками). Например: Helllo woood , должно получится: He...o w...d. -------------------------------------------------------------------------------------------------------- Что то не так сделал! В чём проблемы?? #include "stdafx.h" #include "iostream" #include "conio.h" using namespace std;
C++ Как отключить или убрать иконку выхода [x] ? Как отключить или убрать иконку выхода ? В интернете нарыл много информации и на просторах киберфорума тоже, но она мне никак не помогла. У меня Visual Studio 2010 http://www.cyberforum.ru/cpp-beginners/thread643247.html
Конкатенация строк C++
Частью задания является реализовать функцию strcat. Возникает какая-то ошибка (см.фото). 1.Вы могли бы подсказать в чём ошибка? 2.Не по теме: как можно улучшить функцию read? Вот код: //read char *Read(void){ size_t size = 32; //первоначальный размер строки
C++ Создание библиотек DLL
Пишу в Dev-C++. Хочу создать DLL - библиотеку. Помогите разобраться в последовательность написания библиотеки DLL.
C++ Статическая линковка: несовместимые параметры командной строки "/clr:pure" и "/MTd" http://www.cyberforum.ru/cpp-beginners/thread643208.html
Я залинковал так: Проект-Свойства-Свойства конфигурации-Общие-Использование MFC - Поставил на ст. Теперь не компилируется: 1>cl : командная строка error D8016: несовместимые параметры командной строки "/clr:pure" и "/MTd" Добавлено через 54 секунды там "/clr: pure... :):):)
C++ Сколько раз слово встречается в предложении Здравствуйте уважаемые программисты. Помогите решить задачу или хотя бы намётки дайте. "Для каждого из слов заданного предложения указать, сколько раз оно встречается в предложении." подробнее

Показать сообщение отдельно
igorrr37
1646 / 1274 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
28.08.2012, 12:54
префикс 901 у обоих номеров одинаковый?
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
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
//#include <boost/regex.hpp>
 
/*
    901 1800000 1899999      ^90118\d{5}$
    901 7000000 7299999      ^9017[0-2]\d{5}$
*/
 
int main()
{
    std::fstream ifs("in.txt", std::ios::in);
    if(ifs.is_open())
    {
        std::string s1, s2, res;
        while(std::getline(ifs, s1))
        {
            //if(boost::regex_match(s1, boost::regex(" *\\d{3} +\\d{7} +\\d{7} *"))) // проверка строки на валидность
            //{
                std::stringstream ss(s1);
                ss >> s1;
                res += ("^" + s1);
                ss >> s1 >> s2;
                ss.clear();
                ss.str("");
                std::string::const_iterator cits1(s1.begin()), cits1End(s1.cend()), cits2(s2.begin());
                for(; cits1 != cits1End; ++cits1, ++cits2)
                {
                    if(*cits1 == *cits2)
                    {
                        res += *cits1;
                    }
                    else if(*cits1 != '0' || *cits2 != '9')
                    {
                        ss << '[' << *cits1 << '-' << *cits2 << ']';
                        res += ss.str();
                        ss.str("");
                    }
                    else
                    {
                        res += "\\d";
 
                    }
                }
                res += '$';
                std::size_t cntr;
                std::string::size_type ind, ind1;
                for(ind = 0; (ind = res.find("\\d", ind)) != std::string::npos; ind += 2) // заменяем последовательность из нескольких \d на \d{n}
                {
                    for(ind1 = ind + 2, cntr = 1; res.find("\\d", ind1) == ind1; ind1 += 2, ++cntr)
                        ;
                    if(ind1 != ind + 2)
                    {
                        ss << "\\d{" << ((ind1 - ind) / 2) << '}';
                        res.replace(ind, ind1 - ind, ss.str());
                        ss.str("");
                    }
                }
                std::cout << res << std::endl;
                res.clear();
            //}
            //else
                //std::cerr << "String:\n" << s1 << "\nis invalid" << std::endl;
        }
        ifs.close();
    }
    else
        std::cerr << "Unable to open file" << std::endl;
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru