/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
string til char* (totalt newbie)
Fra : JokeSten


Dato : 29-12-02 22:00

hi

har et lille dumt problem. Jeg har en streng og en funktion som skal have
en char* som argument. En streng er jo bare et array af chars men jeg kan ikke
typecaste strengen til char*.

for følgende kompile error når jeg prover:
test.cpp: In function `int main(int, char**)':
test.cpp:10: cannot convert `hest' from type `std::string' to type `char*'

Hvad skal jeg gøre for at omdanne en string til et char* ??

Hurtig hjælp vil jeg sætte pris på :)

JokeSten




 
 
Frank Nielsen (29-12-2002)
Kommentar
Fra : Frank Nielsen


Dato : 29-12-02 22:13

JokeSten wrote:
> hi
>
> har et lille dumt problem. Jeg har en streng og en funktion som skal have
> en char* som argument. En streng er jo bare et array af chars men jeg kan ikke
> typecaste strengen til char*.
>
> for følgende kompile error når jeg prover:
> test.cpp: In function `int main(int, char**)':
> test.cpp:10: cannot convert `hest' from type `std::string' to type `char*'
>
> Hvad skal jeg gøre for at omdanne en string til et char* ??
>
> Hurtig hjælp vil jeg sætte pris på :)
>
> JokeSten
>
>
>
Prøv med en: char* test = hest.c_str();

Cheers, Frank

PS: Mere info på STL http://www.sgi.com/tech/stl/


Ivan Johansen (29-12-2002)
Kommentar
Fra : Ivan Johansen


Dato : 29-12-02 22:34

Frank Nielsen wrote:
> Prøv med en: char* test = hest.c_str();

Dette vil ikke virke, da c_str() returnerer const char*. Hvis funktionen
kan tage const char* kan følgende bruge:
const char* test = hest.c_str();

Hvis det ikke er muligt at bruges const char*, er det nødvendigt at lave
en kopi af hest.

Ivan Johansen


Ivan Johansen (29-12-2002)
Kommentar
Fra : Ivan Johansen


Dato : 29-12-02 22:26

JokeSten wrote:
> Hvad skal jeg gøre for at omdanne en string til et char* ??

Du kan bruge string::c_str() til at konvertere en string til en const
char*. Men den er const, så du kan ikke skrive til den. Hvis den ikke må
være const, er du nødt til at lave en kopi af indholdet i din string:

void g(char*);
void f(std::string &S)
{
char str[100];
std::strcpy(str, S.c_str());
g(str);
S = str;
}

Her kopieres indholdet af S over i str, hvorefter str bruges i
funktionskaldet til g(), som kan ændre på den og derefter skrive den
tilbage i S.

Man bør selvfølgelig sørge for at der allokeres plads nok til str. Dette
kan eventuelt gøres dynamisk.

Ivan Johansen


JokeSten (29-12-2002)
Kommentar
Fra : JokeSten


Dato : 29-12-02 22:33

<snip>

Mange tak til jer begge. Det var lige hvad jeg manglede :)

JokeSten





Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste