Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122

    [C++Builder] char *mio...

    ciao a tutti...
    ho un problrma..
    ho una funzione che come argomento vuole un vettore di char, tipo:
    codice:
    char *mio = "(12,13,14)";
    vorrei passre questo vettore direttamente da un Edit ,tipo:
    codice:
    char *mio = Edit->Text;
    funzione( mio);
    ma naturalmente non lo accetta..dovre in qualche modo convertirlo..come poso fare??
    grazie..ciao..
    Mi raccomando!...in generale...

  2. #2

    Re: [C++Builder] char *mio...

    Originariamente inviato da SDB
    ciao a tutti...
    ho un problrma..
    ho una funzione che come argomento vuole un vettore di char, tipo:
    codice:
    char *mio = "(12,13,14)";
    vorrei passre questo vettore direttamente da un Edit ,tipo:
    codice:
    char *mio = Edit->Text;
    funzione( mio);
    ma naturalmente non lo accetta..dovre in qualche modo convertirlo..come poso fare??
    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 :
    codice:
         char *mio = new char[ Edit->Text.Length() + 1 ];
         strcpy( cp, Edit->Text.c_str() );
         funzione( mio );
    Se hai bisogno di un puntatore 'persistente'
    altrimenti :
    codice:
         funzione( Edit->Text.c_str() );
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.