Avatar billede don_r Nybegynder
21. oktober 2004 - 18:38 Der er 9 kommentarer og
1 løsning

Konvater string til const char*

Hej Mestre

Jeg hadder at arbejde med
char picBuffer[30000];

i stedet arbejder jeg med strings i mit program, men nogle funktioner vil kun have const char*, f.eks. når man arbejde med sockets. Er der nogen der ved en nem måde at konvatere en C++ string til en const char*

Eller måske en tutorial i C strings, og dertilhørende funktioner som f.eks. strcat o.s.v.
Avatar billede sovsekoder Nybegynder
21. oktober 2004 - 18:41 #1
string s = "guuudaw"
char* rv = new char[s.length()+1];
strcpy(rv, s.c_str(), s.length()+1);
Avatar billede don_r Nybegynder
21. oktober 2004 - 18:51 #2
to many arg for strcpy skriver den er det strncpy du mener ??
Avatar billede sovsekoder Nybegynder
21. oktober 2004 - 18:54 #3
ja .

altså ideen er at lave et array med plads til strengen (+1 så der er plads til 0-terminering). og derefter kopiere strengen over i array'et. Men skal så huske at release den hukkomelse man har allokeret igen
Avatar billede sovsekoder Nybegynder
21. oktober 2004 - 19:00 #4
dvs. når man er færdig med rv, så : delete[] rv;
Avatar billede sovsekoder Nybegynder
21. oktober 2004 - 19:09 #5
ok, nu læser jeg så efter og ser du gerne vil ha' en const char*, og det er lige hvad s.c_str() giver tilbage.... det andet er til hvis du vil lave en kopi til char* hvorefter array'et kan ændres i.
Avatar billede arne_v Ekspert
21. oktober 2004 - 19:14 #6
http://www.cppreference.com/stdstring.html
http://www.cplusplus.com/ref/

fortæller om strxxx funktionerne.

Du kan sagtens lave:

const char *ca = s.c_str();

men det bliver hurtigt messy, når du skal til at opdatere i data.
Avatar billede don_r Nybegynder
21. oktober 2004 - 20:32 #7
Jeg giver pointene til sovsekoder, han var lidt hurtigere, men tak for linkene til referencerne arne_v

Smid lige et svar sovsekoder
Avatar billede don_r Nybegynder
21. oktober 2004 - 21:00 #8
Et helt anden ting, som jeg måske skal oprette et spg. om er:

Jeg skal lave en simpel webserver, jeg har ind til videre prøvet at sende et billede til browseren, men det virker ikke helt. Er det fordi leger med C++ strenge som jeg så c_str() før jeg kalder write ???

Jeg laver først headeren, så åbner jeg filen læser hver tegn ind i en streng og til sidst sætter jeg dem samme og kalder write. Hmmm, jeg har hørt noget med at filen muligvis indeholder \0 eller sådan noget.
Avatar billede arne_v Ekspert
21. oktober 2004 - 21:19 #9
Jeg ville ikke bruge STL string til binære data. Stor risiko for problemer.

Du kan heller ikke bruge strxxx funktioner.

char array og memxxx funktioner.
Avatar billede sovsekoder Nybegynder
24. oktober 2004 - 14:42 #10
tak
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis