Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: LorD_OniX 23 Června 2009, 22:05:53
-
Ahoj, potreboval bych poradit od vas co to pouzivate, odkud jste cerpali nejake informace nebo kterou knihovnu pouzivate. Vim ze se daji pouzivat i regularni vyrazy pod C, ale radeji mam C++ a pouziti stringu.
Treba na teto adrese je priklad:
http://www.johndcook.com/cpp_regex.html
ale ten se neda prelozit a nefunguje.
Vim ze existuje boost library, rcpe co pouzivate vy a co je predevsim v zakladni instalaci knihoven c++ ? Moc diky za odpovedi nebo odkazy.
-
Zdravím Vás,
podle množství odpovědí na Váš dotaz a sloganu "Jeden proráží, ostatní následují",
Vy bude asi ten první.. ;D ,což Vás samozřejmě šlechtí.
Já v C++ neprogramuji, ale podle mých zkušeností s regulárními výrazy z jiných jazyků
se vyplatí instalovat balík, který vychází z Perlu (třeba xslt 2.0 používá odvozeninu
funčností právě z Perlu, Java do jisté míry také).
Základní balík pro práci s regulárními výrazy v C++ by měl být v "základu" Ubuntu.
Viz třeba zde : http://packages.ubuntu.com/hardy/libboost-regex-dev.
Já s instalací zkušenost nemám, ale zde se jistě najde někdo schopnější, kdo Vám poradí,
jakmile se do instalace pustíte.
Mrkněte také zde (třeba zde něco najdete) : http://ubuntuforums.org/archive/index.php/t-1114404.html
-
man pcrecpp
-
Zdravím
chtěl bych se zeptat, co dělám špatně při vkládání regulárních výrazů do kodu C++ programu. C++ se učím a na tohle jsem zatím nepřišel
#include <iostream>
#include <array>
#include <regex>
using namespace std;
void main()
{
int cislo;
cout > cislo;
if(cislo == @"^\d[ 0 - 9 ]$"){
for(int i = 0; i < cislo; i++){
cout << "Hello C++" << endl;
}
}
else
{
cout << "nezadali jste cislo!" << endl;
}
/* to pole jsem si vymyslel, abych zjistil jak na nej */
double pole[24];
for(int j = 1; j < 24; j++){
pole[j];
double g = 3.14159 + 2*2;
pole[j] = g;
cout << pole[j] << endl;
}
}
mělo by to dělat to, že když zadám něco jiného než číslo, tak mi vypíše hlášku, že jsem nezadal číslo a pak pokračovat k poli (to jsem si vymyslel jen tak, abych zjistil jak na to )
musím dělat ve visual studiu, mame to ve skole a ucitel to chce
prosím neukamenujte mě, jsem nováček
-
Zdravím Vás,
nejsem znalý C++ code, nicméně pokud se podívám na část code týkající se regulárního výrazu, tak minimálně :
a) definice character class pro match pouze číslic je [0-9], ne [ 0 - 9 ]
b) také jsem nenašel rozumný quantifier za character class, který by měl být, minimálně,
znak '?' nebo '*' nebo '+'
Čili to, co hledáte, by mohlo vypadat takhle : [0-9]+, samozřejmě je nutno zasadit to do kontextu C++.
Btw, Vy máte navíc použit znak '^' na začátku reg. výrazu, což jinak znamená, že aby nastal match (omlouvám se za příšernou češtinu) musí daná proměnná <<cislo>> začínat číslicemi, ne např. znakem 'mezera', což může být (to je na diskusi) na vstup dat z klávesnice zbytečné omezení...
Moje osobní skušenost je nebýt na uživatele zbytečně přísný a umožnit mu při vstupu dat vytvářet chyby typu "zavadil jsem o klávesnici nosem... ( a stisknul tím nechtěně klávesu TAB, či SPACE, či CTRL+ALT+DEL.. ;D ;D ;D).." , než mu ve smyčce "nadávat" že "Nastala chyba při zadávání dat", aniž by věděl, jaké že to chyby se dopustil... ;)