int main() { std::string y = "Ole Nielsen"; char *x = new char[y.size() + 1]; strcpy(x, y.c_str()); char v[1025]; // nok er nok strcpy(v, y.c_str()); delete [] x;
Thx :) men btw gider du ikke også lige skrive nogle forklaringer på? Jeg er rimelig newbie til det her c++ og lære det nok hurtigst hvis jeg får at vide hvad der sker :)
Oprette et dynamisk array, af samme størrelse som std::string'en y, plus plads til nulterminering: char *x = new char[y.size() + 1];
Et fixed størrelse array, skal være stort nok: char v[1025]; // nok er nok
Nedlægger det dynamiske array igen efter brug: delete [] x;
FromString læser std::string'en ud i en stringstream, hvorfra man kan stream'e en int, double, whatever, på samme måde som fra tastaturet eller en fil. FromString returnerer true hvis man kunne konvertere.
Split splitter input op ved , bemærk at indput bliver ødelagt ved operationen.
Ok nu har jeg siddet og rodet lidt med det, alt det med at parse virker fint nok, mangler så stadig at kigge på det med split, men har et problem i denne metode:
std::string y = "Ole Nielsen"; char *x = new char[y.size() + 1]; strcpy(x, y.c_str()); char v[1025]; // nok er nok strcpy(v, y.c_str()); delete [] x;
der hvor du siger char v[1025]; skaber problemer, da det er meningen at det er noget der skal skrives til en fil. Men hvis man bare siger 1025 så laver den en masse underlige tegn efter man har skrevet det ned til filen. Jeg prøvede så at sige char v[y.size() + 1]; istedetfor men kunne jeg ikke få lov til åbenbart, hvordan løser jeg det problem?
bcc32 -D_DEBUG -g100 -j25 -Od -r- -k -y -v -vi- -tWC -c -IC:\CBuilderX\include -n"D:\c++ programmering\basic\windows\Debug_Build" controller.cpp filhaandtering.cpp Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 Borland controller.cpp: "controller.cpp": E2034 Cannot convert 'const char *' to 'char *' in function Controller::skrivTilFil(char *,int) at line 12 "controller.cpp": E2342 Type mismatch in parameter 'text' (wanted 'char *', got 'const char *') in function Controller::skrivTilFil(char *,int) at line 12 "controller.cpp": W8057 Parameter 'text' is never used in function Controller::skrivTilFil(char *,int) at line 14 "controller.cpp": W8057 Parameter 'size' is never used in function Controller::skrivTilFil(char *,int) at line 14 *** 2 errors in Compile *** filhaandtering.cpp: "filhaandtering.cpp": E2316 'Filhaandtering::skrivTilFil(const char * const,int)' is not a member of 'Filhaandtering' at line 8 "filhaandtering.cpp": E2206 Illegal character '\' (0x5c) at line 9 "filhaandtering.cpp": E2206 Illegal character '\' (0x5c) at line 9 *** 3 errors in Compile *** BCC32 exited with error code: 1 Build cancelled due to errors
bogen hedder: Grundlæggende programmering i c++ af Henrik Tange
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.