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

В каждой второй строке удалить третье слово, если такое есть - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить, есть ли в массиве указанный элемент http://www.cyberforum.ru/cpp-beginners/thread1081332.html
Вот ввожу я число, а до этого я прописал рандом, который выводит 4 однозначных числа, например: 2,1,2,4. Так вот ввел я 1 число, допустим 2. Мне ввыводит: "Да это число есть в массиве", вожу второе например 7, а оно пишет :"Дибил, числа нет в массиве". Цикл не заканчивается пока я не угадаю все 4 числа, помогите. Пока что я осилил только рандом ...
C++ Что это за код вызывается из стека вызовов? А что это за код, приличный массив кода, который вызывается из стека вызовов? http://www.cyberforum.ru/cpp-beginners/thread1081331.html
Посчитать сколько в текстовом файле гласных C++
Здравствуйте, помогите написать программу пожалуйста, вот сама задача программы: Посчитать сколько в текстовом файле гласных. Непонимаю как он будет понимать гласные буквы...
Есть ли стандартная функция, запускающая указанный файл с приложениями по умолчанию? C++
Здравствуйте, мне интересно, есть ли стандартная функция, отвечающая за открытие указанного файла? Например, оформить case`ами: при вводе цифры "1", открывается, к примеру файл 123.rar по адресу D://Files, при вводе цифры "2", открывается файл fail.exe. Интересен сам факт существования функции или реализация. Заранее спасибо.
C++ Разработать структуру с именем ZNAK, содержащую поля http://www.cyberforum.ru/cpp-beginners/thread1081304.html
Разработать структуру с именем ZNAK, содержащую поля: • Фамилия, имя; • Знак Зодиака; • Дата рождения (массив их трёх чисел для хранения даты, месяца и года). Написать программу, выполняющую следующие действия: • Ввод с консоли данных в массив структур ZNAK; • Вывод на консоль информации о человеке, чья фамилия введена с кон- соли. Если таких людей нет, вывести на консоль...
C++ В одномерном массиве, состоящем из n элементов, вычислить минимальный по модулю элемент массива В одномерном массиве, состоящем из n элементов, вычислить минимальный по модулю элемент массива. подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
26.01.2014, 01:56     В каждой второй строке удалить третье слово, если такое есть
Легко решить можно с помощью регурярных выражений и boost. Например, удаление 3 слова в строке:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
#include <boost/regex.hpp>
 
int main()
{
   std::string str = "first second third fourth ";
 
   const boost::regex reg("\\s*(\\<.*?\\>\\s+){2}(\\<.*?\\>)");
   boost::smatch match;
   if (boost::regex_search(str.cbegin(), str.cend(), match, reg))
   {
      //for (auto& i : match) std::cout << i << "\n";
      if (match.size() == 3)
         boost::algorithm::erase_first(str, match[2].str());
   }
   std::cout << str << "\n";
 
   return 0;
}
Это не сложно будет переделать под решение полной задачи, - нужно будет всего лиши разбить требуемый текст на строки и пройтись по нему в цикле работая с каждым третим элементом. А без буста все это писать надо будет очень долго и нудно.

Не по теме:

Кликните здесь для просмотра всего текста
Вопрос не по теме, по регулярному выражению - почему данный ниже код бросает иключение? - хотел сделать lookbehind (?<=) в регулярке, что то типа этого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <boost/algorithm/string/regex.hpp>
#include <boost/regex.hpp>
 
int main()
{
   std::string str = "first second third fourth ";
 
   const boost::regex reg("(?<=\\s*(\\<.*?\\>\\s+){2})(\\<.*?\\>)");
   boost::algorithm::erase_regex(str, reg);
   std::cout << str << "\n";
 
   return 0;
}

 
Текущее время: 14:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru