strncpy(myarray, mystr.c_str(), mystr.length()); myarray[mystr.length()] = 0; // Nu er myarray et char array med din float // Så her kan du gøre noget med myarray. Men husk til sidst delete[] myarray; return 0; }
soreno> Bemærk at sprintf ikke er typesikker, i modsætning til ostringstream (ligesom stdio.h printf, fprintf og så videre ikke er typesikker i modsætning til streams generelt).
Jeg laver altid fejl i min kode. Det er ikke med vilje, sådan er det bare. Men jeg har måttet konstatere at jo mere jeg bruger C++ standard library, jo færre fejl laver jeg. Standard library (herunder STL) giver mig den typesikkerhed, der gør at oversætteren fanger størstedelen af de fejl jeg laver. Og en fejl fanget på oversættelsestidspunktet er som regel ret nem at rette, det er straks værre med et underligt core dump, hvor man måske endda har fået overskrevet stakken, så der ikke er noget back trace.
Derfor foretrækker jeg at lade som om jeg ikke ved hvad jeg gør.
Men selv med sprintf kan det laves en smule mere sikkert med snprintf-udgaven, bare for at sikre at den float ikke på et tidspunkt bliver et tal der fylder mere end 15 tegn (eftersom der allokerer en 16-byte buffer som sprintf skriver ind i ).
Men ellers har du ret, jeg har bare for tit været ude for at selvom jeg "ved hvad jeg gør", så er det gået galt alligevel.
Principielt kan jeg godt tilslutte mig din betragtning om type safe.
Jeg er dog ikke overbevist om at det er et godt eksempel. Din kode er betydeligt større og mere kode betyder også normalt flere muligheder for at lave fejl. Og der er masser af fejl-muligheder som compileren ikke fanger.
Synes godt om
Ny brugerNybegynder
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.