std::string to char*
Jeg vil konvertere en std::string til en **char* eller char[]** datatype.
std::string str = "string";
char* chr = str;
Resulterer i: "error: cannot convert 'std::string' to 'char' ...".
Hvilke metoder finnes det for å gjøre dette?
303
3
Det vil ikke automatisk konvertere (gudskjelov). Du må bruke metoden
c_str()
for å få C-strengversjonen.Merk at den returnerer en
const char *
; du har ikke lov til å endre C-strengen som returneres avc_str()
. Hvis du vil behandle den, må du kopiere den først:Eller i moderne C++:
Hvis du bare vil ha en C-streng som representerer det samme innholdet:
Hvis du vil ha en C-streng med nytt innhold, er en måte (gitt at du ikke kjenner strengstørrelsen på kompileringstidspunktet) dynamisk allokering:
Ikke glem å
delete[]
den senere.Hvis du vil ha et statisk allokert array med begrenset lengde i stedet:
std::string
ikke implisitt konvertere til disse typene for den enkle grunn at behovet for å gjøre dette er vanligvis en design lukt. Forsikre deg om at du virkelig trenger det.Hvis du definitivt trenger en
char*
, den beste måten er sannsynligvis:Forutsatt at du bare trenger en C-streng som input: