|
| double til char* eller string Fra : IB |
Dato : 17-04-01 13:23 |
|
Hej
Lige et lille newbie spg:
Findes der en metode der ligesom, itoa(), konverterer fra int til en char*,
kan konvertere fra double til char* eller string?? I så fald, hvilken
headerfil skal så includes??
Mvh IB
| |
Mogens Hansen (17-04-2001)
| Kommentar Fra : Mogens Hansen |
Dato : 17-04-01 14:00 |
|
"IB" <IB@kefas.dk> wrote in message news:9bhcl0$2jl$1@news.cybercity.dk...
> Hej
> Lige et lille newbie spg:
> Findes der en metode der ligesom, itoa(), konverterer fra int til en
char*,
> kan konvertere fra double til char* eller string?? I så fald, hvilken
> headerfil skal så includes??
I C kan du bruge "sprintf" eller hellere "snprintf":
#include <stdio.h>
int main(int /*argc*/, char* /*argv*/[])
{
double d =1.234;
char buffer[128];
snprintf(buffer, sizeof(buffer), "%f", d);
return 0;
}
I C++ kan du bruge "ostrstream" eller "ostringstream":
#include <sstream>
#include <string>
int main(int /*argc*/, char* /*argv*/[])
{
using namespace std;
double d =1.234;
ostringstream os;
os << d;
string s = os.str();
return 0;
}
så slipper du for at kæmpe med at specificere typen (double) rigtigt i
format-strengen og for at allokere tilstrækkeligt meget hukommelse.
Venlig hilsen
Mogens Hansen
| |
Igor V. Rafienko (17-04-2001)
| Kommentar Fra : Igor V. Rafienko |
Dato : 17-04-01 14:21 |
|
* IB@kefas.dk
> Findes der en metode der ligesom, itoa(), konverterer fra int til en
> char*, kan konvertere fra double til char* eller string?? I så fald,
> hvilken headerfil skal så includes??
I utgangspunktet er svaret "nei". Det finnes ingen portabel metode som
heter ftoa/dtoa.
Det er 2 typer "løsninger" som finnes:
* C-style, sprintf
* C++-style, stringstreams
Ta en titt på dinkum.com (fx.) for en omfattende beskrivelse.
ivr
--
Ë ÓÏÖÁÌÅÎÉÀ, "ÉÎÔÕÉÔÉ×ÎÏ ÐÏÎÑÔÎÙÊ ÉÎÔÅÒÆÅÊÓ" - ÍÁÒËÅÔÏÉÄÎÙÊ ÍÉÆ.
éÎÔÕÉÔÉ×ÎÏ ÐÏÎÑÔÎÙÊ ÉÎÔÅÒÆÅÊÓ ÅÓÔØ ÔÏÌØËÏ Õ ÓÉÓØËÉ.
-- V. Lugovsky on <news:fido7.ru.informatica>
| |
Richard Flamsholt (18-04-2001)
| Kommentar Fra : Richard Flamsholt |
Dato : 18-04-01 21:50 |
|
igorr@ifi.uio.no (Igor V. Rafienko) skrev:
>I utgangspunktet er svaret "nei". Det finnes ingen portabel metode som
>heter ftoa/dtoa.
>
>* C-style, sprintf
Hvorfor mener du at fx sprintf-metoden ikke er portabel?
--
Richard Flamsholt
richard@flamsholt.dk - www.richard.flamsholt.dk
| |
Kent Friis (18-04-2001)
| Kommentar Fra : Kent Friis |
Dato : 18-04-01 23:00 |
|
dDen Wed, 18 Apr 2001 22:49:40 +0200 skrev Richard Flamsholt:
>igorr@ifi.uio.no (Igor V. Rafienko) skrev:
>>I utgangspunktet er svaret "nei". Det finnes ingen portabel metode som
>>heter ftoa/dtoa.
>>
>>* C-style, sprintf
>
>Hvorfor mener du at fx sprintf-metoden ikke er portabel?
Som jeg læser det, skriver han at der ikke findes nogen portabel dtoa,
så man er nødt til at bruge sprintf i stedet for, hvis man vil skrive
portabel kode.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr - sidste billede: planets.png
| |
Richard Flamsholt (19-04-2001)
| Kommentar Fra : Richard Flamsholt |
Dato : 19-04-01 00:11 |
|
leeloo@mailandnews.com (Kent Friis) skrev:
>Som jeg læser det, skriver han at der ikke findes nogen portabel dtoa,
>så man er nødt til at bruge sprintf i stedet for, hvis man vil skrive
>portabel kode.
Jeg tror sørme du har ret. Jeg misforstod Igor. Sorry.
Jeg tror jeg faldt over, at Igor satte "løsninger" i anførselstegn, som
for at antyde at de ikke var ordentlige, portable løsninger.
--
Richard Flamsholt
richard@flamsholt.dk - www.richard.flamsholt.dk
| |
|
|