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

Регулярные выражения, Поиск всех видов чисел в строке, CString - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вызов методов класса http://www.cyberforum.ru/cpp-beginners/thread1165205.html
Здравствуйте! При компиляции программы(в среде CodeBloks) выдается такая ошибка: request for member 'Arrayss:: array_proc' in 'j', which is of non-class type 'Arrayss()' Файл main23.cpp: #include "classes.h" int main() { Arrayss j(); j.Arrayss::array_proc(); return 0;
C++ Ввод-вывод элементов одномерного массива Помогите написать программу для ввода элементов одномерного массива, вывода этого массива на экран. Вычислить среднее арифметическое значение элементов между максимальным и минимальным элементами. http://www.cyberforum.ru/cpp-beginners/thread1165186.html
Написать программу для вычисления ряда C++
Здравствуйте, помогите написать программу для вычисления суммы элементов ряда y1 с заданной точностью e(e>0) и сумму N элементов ряда y2; Заранее спасибо.
C++ Наследование контейнера
А можно ли создать класс, который будет наследовать все функции от vector'a, и собрать его в dll, чтобы подключить на C#?
C++ Игра в карты http://www.cyberforum.ru/cpp-beginners/thread1165169.html
Делаю игру, симулирующую игру в дурака в консоли. Пока вместо карт поставил просто числа. Большее число бьет меньшее)). Остановился на этом этапе. Код компилируется, запускается, но заканчивается ошибкой. Где ошибка? Или подскажите как пользоваться отладчиком CodeBlocks #include <iostream> #include <conio.h> #include <vector> #include <ctime> #include <cstdlib> using namespace std; ...
C++ Запуск .exe с параметрами? как реализовать на С++ следующее: запускать приложение с параметрами и выполнять при получении нужного параметра нужную функцию? подробнее

Показать сообщение отдельно
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
03.05.2014, 20:04     Регулярные выражения, Поиск всех видов чисел в строке, CString
Здравствуйте Уважаемые Дамы и Господа.
Уже какой вечер мучаюсь, пытаюсь понять как решить поставленную задачу.
Имеется строчка:
C
1
CString str = " int z, a=245;int b = 4.6;int b = 0xa11;int c = 011; for(int a = 1;i<123; i++) ";a=437-(-0xab24)"
Задача выдернуть из неё все числа.
С помощью:
C
1
str.FindOneOf(L"01234567890");
Получается найти число(любого вида, что очень важно).
Данной функцией я перевожу число из строкового типа в целочисленный.
C
1
swscanf_s(str, L"%i", &a);
Но если необходимо найти отрицательное число, возникают проблемы..
C
1
str.FindOneOf(L"-01234567890");
Находится первое вхождение символа без цифры.
Поэтому как я осознал, в решение поставленной задачи мне помогут регулярные выражения std regex(если это не так, буду рад вариантам иного решения данной задачи).
К сожалению в данной технологии я полный профан, поэтому хотел бы попросить помощи, совета по хорошим ресурсам, книгам, статьям где можно получить необходимые знания.
Если напишите шаблон решения поставленной задачи тоже буду примного благодарен, буду по нему понимать что как происходит.

Также задам вопрос наперёд, если решать поставленную задачу без знаков то всё облегчается и регулярные выражения не нужны.
Так как swscanf_s нужно передавать строчку где первые символы и есть необходимое число перевода.
А FindOneOf возвращает только номер от начала строки.
То возникает проблема, как передать адрес места, найденного числа в строке.

Данную проблему я решил с помощью очистки строчки до необходимого числа.(Если имеются другие варианты более простые или удобные также буду благодарен.)
Например:
C
1
CString str = " int z, a=245;int b = 4.6;int b = 0xa11;int c = 011; for(int a = 1;i<123; i++) ";a=437-(-0xab24)"
После моего быдлокодинга, строка становится такой:
C
1
CString str = "          245;int b = 4.6;int b = 0xa11;int c = 011; for(int a = 1;i<123; i++) ";a=437-(-0xab24)"
Дальше передавая str в swscanf_s число прекрасно распознаётся.
Но возникает другая проблема.
Как заставить FindOneOf перейти к поиску следующего числа 4.6.
Была идея убивать число 245 в строчке, но как это реализовать я даже не представляю.
Возможно меня всё также спасут регулярные выражения.
Надеюсь найдутся гуру регулярных выражений которые осилят данную простыню.
И я буду премного вам благодарен за советы и помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru