/ 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 to Int
Fra : Lars kj


Dato : 05-12-01 20:21

Hej

Er det ikke noget med at der er en kommando der kan lave en String af tal om
til en int, eller bedre en string af float om til float.

/lars


 
 
Jonas Meyer Rasmusse~ (05-12-2001)
Kommentar
Fra : Jonas Meyer Rasmusse~


Dato : 05-12-01 20:51

Lav en istringstream udaf din streng og benyter >> operatoren..
her er et eksempel:

#include <sstream>

int main( int,char**)
{
std::istringstream s( "1 2 2.0" );
int a, b;
float c;
s >> a >> b >> c;
std::cout << a << b << c << std::endl;
}



Lars kj (05-12-2001)
Kommentar
Fra : Lars kj


Dato : 05-12-01 21:09

> Lav en istringstream udaf din streng og benyter >> operatoren..
> her er et eksempel:
>
> #include <sstream>
>
> int main( int,char**)
> {
> std::istringstream s( "1 2 2.0" );
> int a, b;
> float c;
> s >> a >> b >> c;
> std::cout << a << b << c << std::endl;
> }
>

OK jeg glemte hvis at sife det skulle være i C og ikke C++ jeg forstår
nemlig ikke en pind af C++ ;)

/lars


Kent Friis (05-12-2001)
Kommentar
Fra : Kent Friis


Dato : 05-12-01 21:42

Den Wed, 5 Dec 2001 21:08:42 +0100 skrev Lars kj:
>> Lav en istringstream udaf din streng og benyter >> operatoren..
>> her er et eksempel:
>>
>> #include <sstream>
>>
>> int main( int,char**)
>> {
>> std::istringstream s( "1 2 2.0" );
>> int a, b;
>> float c;
>> s >> a >> b >> c;
>> std::cout << a << b << c << std::endl;
>> }
>>
>
>OK jeg glemte hvis at sife det skulle være i C og ikke C++ jeg forstår
>nemlig ikke en pind af C++ ;)

String er ellers en C++ klasse, så jeg hoppede over spørgsmålet, fordi
jeg heller ikke fatter C++.

Hvis det var et tal i en streng, så prøv at kigge på atoi(), atof() (den
nemme løsning) eller strtol() og strtod() (den korrekte løsning).

Drejer det sig om en række tal i samme streng, som herover, skal du
enten bruge sscanf(), eller overveje hvad man kan bruge **endptr til
i strdol() og strtod().

Mvh
Kent
--
http://www.celebrityshine.com/~kfr/

Lars kj (05-12-2001)
Kommentar
Fra : Lars kj


Dato : 05-12-01 21:59

>
> Hvis det var et tal i en streng, så prøv at kigge på atoi(), atof() (den
> nemme løsning) eller strtol() og strtod() (den korrekte løsning).
>
> Drejer det sig om en række tal i samme streng, som herover, skal du
> enten bruge sscanf(), eller overveje hvad man kan bruge **endptr til
> i strdol() og strtod().
>
OK jeg er ikke skarp i C eller C++, men det drejer sig om en int
tal_i_str[25]="23.4" som jeg gerne vil have over i en float tal_i_f=23.4

Jeg har så, for at gøre det nemmere lavet de 23.4 om til 234 og så har jeg
planer om at dividere med 10 når en gang det er blevet til en int og derved
få min float på 23.4

Så jeg har altså en tal_i_str som jeg gerne vil have over i float.

hvordan bruger man lige en sscanf eller strtod eller hvad jeg nu skal bruge?

/lars

ps: jeg takker meget for de hurtige svar, men jeg har altså ikke så meget
forstand på det og derfor er det nok lidt dumme spørgsmål jeg kommer med ;)


Kent Friis (05-12-2001)
Kommentar
Fra : Kent Friis


Dato : 05-12-01 22:35

Den Wed, 5 Dec 2001 21:59:29 +0100 skrev Lars kj:
>>
>> Hvis det var et tal i en streng, så prøv at kigge på atoi(), atof() (den
>> nemme løsning) eller strtol() og strtod() (den korrekte løsning).
>>
>> Drejer det sig om en række tal i samme streng, som herover, skal du
>> enten bruge sscanf(), eller overveje hvad man kan bruge **endptr til
>> i strdol() og strtod().
>>
>OK jeg er ikke skarp i C eller C++, men det drejer sig om en int
>tal_i_str[25]="23.4" som jeg gerne vil have over i en float tal_i_f=23.4
>
>Jeg har så, for at gøre det nemmere lavet de 23.4 om til 234 og så har jeg
>planer om at dividere med 10 når en gang det er blevet til en int og derved
>få min float på 23.4

Det gør det bare ekstra besværligt.

float f;
f=atof(tal_i_str);

Den holder selv styr på "kommaet".

Med strtod() vil man gøre noget a'la:

chat * next;
float f;
f=strtod(tal_i_str, &next);
if(next == tal_i_str) fprintf(stderr,"Ikke et tal\n");

Mvh
Kent
--
http://www.celebrityshine.com/~kfr/

Lars kj (05-12-2001)
Kommentar
Fra : Lars kj


Dato : 05-12-01 23:36

>
> Det gør det bare ekstra besværligt.
>
> float f;
> f=atof(tal_i_str);
>
> Den holder selv styr på "kommaet".
>
> Med strtod() vil man gøre noget a'la:
>
> chat * next;
> float f;
> f=strtod(tal_i_str, &next);
> if(next == tal_i_str) fprintf(stderr,"Ikke et tal\n");
>

Jeg takker mange gange, det var også noget i den stil jeg prøvede men det er
det der med & * som altid driller ;)

/lars


Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste