std::string til char*
Jeg ønsker at 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 er der til rådighed til at gøre dette?
303
3
Den konverteres ikke automatisk (gudskelov). Du skal bruge metoden
c_str()
for at få C-strengversionen.Bemærk, at den returnerer en
const char *
; du må ikke ændre den C-streng, som returneres afc_str()
. Hvis du vil behandle den, skal du først kopiere den:Eller i moderne C++:
Hvis du blot ønsker en C-lignende streng, der repræsenterer det samme indhold:
Hvis du vil have en C-lignende streng med nyt indhold, er en måde (eftersom du ikke kender strengen størrelse på kompileringstidspunktet) dynamisk allokering:
Glem ikke at
delete[]
den senere.Hvis du i stedet ønsker et statisk allokeret array af begrænset længde:
std::string
konverterer ikke implicit til disse typer af den simple grund, at det normalt er en designlugt at skulle gøre dette. Sørg for, at du virkelig har brug for det.Hvis du afgjort har brug for en
char*
, er den bedste måde nok:Hvis du antager, at du blot har brug for en C-lignende streng til at sende som input: