• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c++ a regex (wyrażenia regularne)

Object Storage Arubacloud
0 głosów
1,441 wizyt
pytanie zadane 17 października 2017 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)
Hej, mam pytanie czy można użyć wyrażeń regularnych w warunkach w c++?

Chodzi mi o walidacje danych, user ma wprowadzić datę w formacie dd.mm.yyyy i chyba łatwiej było by sprawdzić to używając regex'a. A może jest jakaś biblioteka, która ma funkcje walidacji danych ?

Z góry dziękuje za odpowiedź i miłego dzonka Wam życzę ;)

2 odpowiedzi

0 głosów
odpowiedź 17 października 2017 przez m4sk1n Pasjonat (16,750 p.)
http://en.cppreference.com/w/cpp/regex

Tak, C++11 posiada bibliotekę od regexa.
0 głosów
odpowiedź 17 października 2017 przez Bondrusiek Maniak (61,370 p.)

Witaj,

wydaje mi się że do takiego zadania możesz użyć klasy i przeciążyć operator>>. Tutaj prosty przykład klasy Date, którą umożliwia zapisanie formatu dd.mm.yyyy:

#include <iostream>
using namespace std;
class Date {
static int lengths [12];
int day,month,year;
public:
Date ();
Date (int day,int month,int year);
Date &operator++ ();
friend bool operator< (const Date &first,const Date &second);
friend ostream &operator<< (ostream &stream,const Date &date);
friend istream &operator>> (istream &stream,Date &date); };
int Date::lengths [12]={31,28,31,30,31,30,31,31,30,31,30,31};
Date::Date (): day (),month (),year () {}
Date::Date (int day,int month,int year): day (day),month (month),year (year) {}
Date &Date::operator++ () {
lengths [1]=(year%4 ? 28 : 29);
if (++day>lengths [month-1]) {
day=1;
if (++month>12) {
month=1;
++year; }}
return *this; }
bool operator< (const Date &first,const Date &second) {
return first.year<second.year
|| (first.year==second.year && (first.month<second.month
|| (first.month==second.month && first.day<second.day))); }
ostream &operator<< (ostream &stream,const Date &date) {
return stream<<date.day<<'.'<<date.month<<'.'<<date.year; }
istream &operator>> (istream &stream,Date &date) {
char character;
stream>>date.day>>character>>date.month>>character>>date.year; }
int main () {
Date first,second;
cin>>first>>second;
for (int i=0;i<7;++i)
cout<<++(first<second ? second : first)<<endl;
return 0; }

Możesz później jeszcze użyć instrukcji if() do sprawdzenia czy wartości liczbowe są poprawne.

Pozdrawiam

komentarz 17 października 2017 przez m4sk1n Pasjonat (16,750 p.)
Czasem prościej jest użyć regexa, zależy w jakim celu potrzebuje tego op
komentarz 17 października 2017 przez Bondrusiek Maniak (61,370 p.)
Zgoda podałem tylko alternatywną możliwość. Bez kombinacji być może to się mu nie przyda tylko będzie używał wyrażeń regularnych.
komentarz 18 października 2017 przez Shiro Stary wyjadacz (10,300 p.)
Fajne, a jak zrobić to wyrażeniem regularnym ;D ?

Dziękuje Ci i pozdrawiam ;)

Podobne pytania

0 głosów
1 odpowiedź 806 wizyt
pytanie zadane 19 października 2017 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)
0 głosów
2 odpowiedzi 749 wizyt
0 głosów
0 odpowiedzi 126 wizyt

92,555 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,941 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...