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

Boost::regex не могу сформировать ссылку на паттерн при поиске - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Инициализация переменных - некорректно работает пример из книги http://www.cyberforum.ru/cpp-beginners/thread1234669.html
Взял задачку из книги Г.Шилда. Должно показывать 1 3 6 10 15. Но у меня выдает 1 2 3 4 5. Набрал всё точь в точь с книги, в чём проблема, кто подскажет? #include <iostream> #include <conio.h> using namespace std; void total (int x); int main(){ setlocale(LC_ALL,"RUS"); cout << "Вычисление суммы чисел от 1 до 5.\n"; total(5); _getch();
C++ Не работает цикл for #include <iostream> #include <conio.h> using namespace std; int main() { int x; for(x=0; x<10; x++); cout << x << " "; _getch(); return 0; } http://www.cyberforum.ru/cpp-beginners/thread1234664.html
C++ Функция инициализации консольной графики от Лафоре
Доброго времени суток. Пытаюсь использовать( только обучения ради ) и изменить библиотеку консольной графики от Лафоре. Среди прочих функций есть функция инициализации графики, вот её код: void init_graphics() { COORD console_size = {80, 25}; //open i/o channel to console screen hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ...
C++ При добавлении студента, сбивается вся структура, и при выводе всего списка студентов, выводит какой то мусор
Суть действий: При добавлении студента, сбивается вся структура, и при выводе всего списка студентов, выводит какой то мусор. Раньше я прописал все тоже самое только без функции AddStudent и все нормально работало( case 50: // добавление студента { AddStudent(stud, &nSize); // добавляем студента
C++ Простой парсер - как перебрать варианты строки http://www.cyberforum.ru/cpp-beginners/thread1234636.html
Всем привет!Опыт программирования на си++ всего месяц-c# около 4 а делфи один год.Решил их кинуть(c# и делфи) и писать все на си++.Если что я 12 летний школьник поэтому обьясните попонятней.VCL знаю неплохо-про инклуды и не говорите-давайте сразу код.Ну хватит тут анкету писать, вот сам и впопрос.Я пишу простенький парсер,не знаю как перебрать варианты строки.Вот код: #include <vcl.h> #include...
C++ Не выполняется код в цикле в приведенном коде Не могу понять, почему не выполняется код в цикле в этом коде: // sp_Ch5P255_Exercise05 /// Занятия по книге Стивена Праты "Язык программирования С++" (2012, 6-е издание). /// Упражнения по программированию. Глава 5, страница 255, упражнение 5. /* Предположим, что вы продаете книгу по программированию на языке C++ для начинающих. Напишите программу, которая позволит ввести ежемесячные... подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
28.07.2014, 17:25     Boost::regex не могу сформировать ссылку на паттерн при поиске
Как то так:
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
#include <iostream>
#include <fstream>
#include <string>
#include <boost/regex.hpp>
 
int main()
{
   std::ifstream ifs("file.txt");
   if (!ifs.is_open()) {
      std::cerr << "Error...\n";
      return 1;
   }
 
   std::string buffer{std::istreambuf_iterator<char>(ifs),
                     std::istreambuf_iterator<char>()};
   const boost::regex localId(R"((\[localID=id(\d+)\]((.|\n|\r)*?))(?=\[))");
   const boost::regex globalId(R"(\[globalID=id(\d+)\]((.|\n|\r)*?)(?=\[))");
   boost::smatch local_match;
   boost::smatch global_match;
 
 
   bool local_res = boost::regex_search(buffer, local_match, localId);
   bool global_res = boost::regex_search(buffer, global_match, globalId);
 
   if (global_res && local_res && local_match[2] == global_match[1])
   {
      std::string temp_global = global_match[0];
      std::string temp_local = "\n" + local_match[0];
      const boost::regex block2(R"((?<=#block2)((.|\n|\r)*?)(?=#end))");
      std::cout << boost::regex_replace(temp_global, block2, temp_local);
   }
 
   system("pause");
   return 0;
}
Это только для одного совпадения. Правильнее будет в цикле проходиться по всей строке данных.
Возможно есть и более изящное решение.
 
Текущее время: 15:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru