PDA

Visualizza la versione completa : [C++] Uso di un vettore di char in C++Builder


SDB
02-12-2005, 12:22
ciao a tutti...
ho un problrma..
ho una funzione che come argomento vuole un vettore di char, tipo:


char *mio = "(12,13,14)";

vorrei passre questo vettore direttamente da un Edit ,tipo:


char *mio = Edit->Text;
funzione( mio);

ma naturalmente non lo accetta..dovre in qualche modo convertirlo..come poso fare??:confused: :confused:
grazie..ciao..

Samuele_70
02-12-2005, 13:15
Originariamente inviato da SDB
ciao a tutti...
ho un problrma..
ho una funzione che come argomento vuole un vettore di char, tipo:


char *mio = "(12,13,14)";

vorrei passre questo vettore direttamente da un Edit ,tipo:


char *mio = Edit->Text;
funzione( mio);

ma naturalmente non lo accetta..dovre in qualche modo convertirlo..come poso fare??:confused: :confused:
grazie..ciao..

Devi convertire la stringa dal tipo 'AnsiString' a 'char*' con il 'c_str()'
La descrizione dall' help del C++ Builder :



AnsiString::c_str() returns a non const temporary pointer to the internal string buffer in the AnsiString object. The pointer is invalid once the statement in which it is used has finished executing. That is,don't do something like this:

char* cp = Edit1->Text.c_str();
char* cp2 = strtok( cp, " \t\n" ); // cp may no longer be valid


If you need a persistent pointer, you MUST copy the string into its own buffer:

char* cp = new char[ Edit1->Text.Length() + 1 ];
strcpy( cp, Edit1->Text.c_str() );


Quindi Puoi fare :


char *mio = new char[ Edit->Text.Length() + 1 ];
strcpy( cp, Edit->Text.c_str() );
funzione( mio );

Se hai bisogno di un puntatore 'persistente'
altrimenti :


funzione( Edit->Text.c_str() );

Loading