Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Znajdz dowolny tekst pomiedzy znacznikami

Ostatnio zmodyfikowano 2016-08-29 14:30
Autor Wiadomość
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
P-151125
czosnek17
» 2016-08-26 11:36:33
Potrzebujesz tylko find i substr
C/C++
string 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;
}
P-151127
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 );
P-151199
« 1 »
  Strona 1 z 1