Prikaz jedne poruke
Stara 13.2.2012, 21:38   #47
Kosinus
Član
 
Član od: 3.11.2009.
Lokacija: root_localhost
Poruke: 132
Zahvalnice: 16
Zahvaljeno 20 puta na 12 poruka
Određen forumom Re: How to... C++

@Ivan-94:
Kod:
char** explode( const char delim, char* src )
{
    char * start = src;
    char * ptr = src;
    char ** tab;
    int i = 0, pos = 0, len = 0;
    int items = 0;

    while( *src ) 
    { 
        if( *src == delim ) 
            items++; 
        src++; 
    }

    if( !items )
        return NULL;

    items++;

    src = start;
    tab = new char * [items];

    while( *ptr && i < items )
    {
        if( *src == delim || *src == 0 )
        {
            len = 0;
            ptr = start;

            while( ptr < src )
            {
                len++; 
                ptr++;
            }

            tab[ i ] = new char [len + 1];
            pos = 0;

            while( start < ptr )
            { 
                tab[ i ][pos] = *start; 
                start++; 
                pos++; 
            }

            tab[ i ][pos] = 0;
            start = ptr + 1;
            i++;
        }

        src++;
    }

    tab[ i ]= NULL;

    return tab; 
}
Funkcija nije moje delo - nasao sam je negde na internetu pre koju godinu.

Koristis ovako:
Kod:
char ** Bla = explode( ':', "1.1.1.1:28960" );

Bla[ 0 ] // Pokazivac na prvi niz karaktera
Bla[ 1 ] // Pokazivac na drugi niz
// Itd...
Mala funkcija koju sam napravio da ti pomogne da izbrojis na koliko delova je tekst podeljen:
Kod:
int count( char ** tabsrc )
{
    int i = 0;
    while( tabsrc[ i ] != NULL )
        i++;

    return i;
}
Ne zaboravi da posle koriscenja oslobodis memoriju:
Kod:
int c = count( Bla );

for( int i = 0; i < c; i++ )
    delete [ ] Bla[ i ];

delete [ ] Bla;
Kosinus je offline   Odgovor sa citatom ove poruke
Sledećih 2 korisnika se zahvaljuje korisniku Kosinus na korisnoj poruci:
Belphegor (13.2.2012), Ivan-94 (14.2.2012)