in einem string eine bestimmte zeichenfolge suchen.....



  • hi
    ich will in einem string eine bestimmte zeichenfolge suchen...
    ich lese mit zuerst eine zeile ein und will dann schaun ob das zeichen: # vorhanden ist oder nicht!!!!!
    fgets(text1,100,f1);
    message=strtok(text1,"#");
    strtok.....ich hab geseh das such nach dem ersten zeichen im string!!!! aber wie weiß ich das kein zeichen gefunden wurde??????????
    if (message == NULL)
    kein ziehen gefunden....



  • *ich will in einem string eine bestimmte zeichenfolge suchen...
    *

    C:

    char strtok( char strToken, const char* strDelimit );**

    ... returns a pointer to the next token found in strToken.
    ... returns NULL when no more tokens are found.

    auch nicht schlecht:
    char strstr( const char string, const char* strCharSet );**

    Überarbeitetes Beispiel aus MSDN:

    #include <cstring>
    #include <cstdio>
    #include <conio.h>
    
    char str[] =    "lazy";
    char string[] = "The quick brown dog jumps over the lazy fox";
    char fmt1[] =   "         1         2         3         4         5";
    char fmt2[] =   "12345678901234567890123456789012345678901234567890";
    
    int main( )
    {
       char* pdest;
       int   result;
       printf( "String to be searched:\n\t%s\n", string );
       printf( "\t%s\n\t%s\n\n", fmt1, fmt2 );
       pdest = strstr( string, str );
       result = pdest - string + 1;
       if( pdest != NULL )
          printf( "%s found at position %d\n\n", str, result );
       else
          printf( "%s not found\n", str );
       getch();   
    }
    
    /*
    Output:
    
    String to be searched:
       The quick brown dog jumps over the lazy fox
                1         2         3         4         5
       12345678901234567890123456789012345678901234567890
    
    lazy found at position 36
    */
    

    C++:

    basic_string::find
    size_type find(E c, size_type pos = 0) const;
    size_type find(const E* s, size_type pos = 0) const;
    size_type find(const E* s, size_type pos, size_type n) const;
    size_type find(const basic_string& str, size_type pos = 0) const;

    Each member function finds the first subsequence in the controlled sequence, beginning on or after position pos, that matches the operand sequence specified by the remaining operands. If it succeeds, it returns the position where the matching subsequence begins. Otherwise, the function returns npos.

    static const size_type npos = -1;

    Datentyp string:
    typedef basic_string<char> string;

    string ist eine Spezialisierung der Templateklasse basic_string für Elemente vom Typ char.

    Beispiel von oben auf C++ umgesetzt:

    #include <string>
    #include <iostream>
    using namespace std;
    
    void wait()
    {
        std::cin.clear();
        std::streambuf* pbuf = std::cin.rdbuf();
        std::streamsize size = pbuf->in_avail();
        std::cin.ignore(size);
        std::cin.get();
    }
    
    int main()
    {
       string substr  = "lazy";
       string str     = "The quick brown dog jumps over the lazy fox";
       string fmt1    = "         1         2         3         4         5";
       string fmt2    = "12345678901234567890123456789012345678901234567890";
    
       cout << "String to be searched:" << endl << "\t" << str  << endl;
       cout << "\t" << fmt1 << endl << "\t" << fmt2 << endl << endl;
       int dest = str.find(substr);
       if (dest != -1)
         cout << "\"" << substr << "\"" << " found at position " << dest + 1 << endl;
       else
         cout << "\"" <<  substr << "\"" << " not found" << endl;  
    
       wait();
    }
    


  • Bitte keine Crosspostings!

    Scheint mal wieder ne neue Mode zu sein...:(

    mfg
    v R


Anmelden zum Antworten