Znajdz dowolny tekst pomiedzy znacznikami
Ostatnio zmodyfikowano 2016-08-29 14:30
Mac23123 Temat założony przez niniejszego użytkownika |
Znajdz dowolny tekst pomiedzy znacznikami » 2016-08-26 10:25:20 Witam. Prosze o pomoc w rozwiazaniu problemu:
string word_to_find1="<ns4:Action>JAKIS_TEKST</ns4:Action>";
void search_all_words_in_file( string & fromFILE, string word_to_find1 ); { size_t position = fromFILE.find( word_to_find1 );
if( position == string::npos ) { cout << "WARN : There is no " << word_to_find1 << " in t2.txt file" << endl; return(0); }
do { cout << "NOTE A : Record "<< word_to_find1 <<" found on " << position <<" position in t2.txt file"<< endl; position = fromFILE.find( word_to_find1, position + word_to_find1.size() ); }
while( position != string::npos ); }
Jak w C++ zapisać zeby szukał tekstu pomiedzy znacznikami: <ns4:Action>...</ns4:Action>? Mam 2 typy znaczników i o wiele szybciej byłoby gdyby szukał pomiedzy nimi.. Inaczej musiałbym znac wszystkie typy "JAKIS_TEKST". Dodam tylko ze interesuje mnie chronologia ale z tym nie ma problemu jak znajde odpowiedz na pytanie powyzej.
Dzięki |
|
czosnek17 |
» 2016-08-26 11:36:33 Potrzebujesz tylko find i substrstring word = "<ns4:Action>JAKIS_TEKST</ns4:Action>"; string markup = "<ns4:Action>";
if( word.find( markup ) != string::npos ) { cout << word.substr( word.find( markup ) + markup.size() ).substr( 0, word.substr( word.find( markup ) + markup.size() ).find( "</" + markup.substr( 1, markup.size() ) ) ) << endl; }
|
|
Mac23123 Temat założony przez niniejszego użytkownika |
» 2016-08-29 14:30:24 Bardzo dziękuję. Troszkę przystosowałem i działa :) Dzieki temu załatwiłem obydwa znaczniki w 1 miejscu. Niestety mam problem poniewaz nie potrafię zamienić wyświetlania pozycji na stringi. Dokładnie chodzi o to że mnie interesuje nie sama pozycja ale tekst który sie za nią kryje. Chciałem napisac coś w stylu wyświetl 30 znaków "PO" word1. Potrafię wypisac pozycję ale za nimi stoją znaki... i tu już sciana.... jak do nich dotrzec..
string word1 = ":Action>"; string markup1 = ":Action>"; size_t position1 = fromFILE.find(markup1);
do { word1.substr( word1.find( markup1 ) + markup1.size() ).substr( 0, word1.substr( word1.find( markup1 ) + markup1.size() ).find( "</" + markup1.substr( 1, markup1.size() ) ) ); position1 = fromFILE.find( markup1, position1 + markup1.size()); cout<<position1<<position1+1<<position1+2<<position1+3<<position1+4<<position1+5<<position1+6<<position1+7<<position1+8<<position1+9<<position1+10<<endl; cout<<""<<endl; Sleep(500); } while (position1 != string::npos ); |
|
« 1 » |