| View previous topic :: View next topic |
| Author |
Message |
Tobias Wollgam Guest
|
Posted: Thu Apr 29, 2004 9:35 am Post subject: string in Zahl umwandeln |
|
|
Hallo.
Verwendet man zum Umwandeln von std::string in eine Zahl z.B. int die
Funktion atoi oder gibt es was besseres?
Sollte man sich eine eigene Funktion schreiben, die das macht?
z.B:
int toInt(const std::string& s)
{
return atoi(s.c_str());
}
.... damit man jederzeit intern Änderungen machen kann?
Vielleicht möchte man später mal bei einem String, der keine Zahl ist, eine
Exception werfen!?!
TIA,
Tobias
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Karl Jenz Guest
|
Posted: Sat May 01, 2004 9:00 am Post subject: Re: string in Zahl umwandeln |
|
|
Tobias Wollgam schrieb:
| Quote: | Hallo.
Verwendet man zum Umwandeln von std::string in eine Zahl z.B. int
die Funktion atoi oder gibt es was besseres?
|
Hallo Tobias,
also unter CBuilder 1.0 gibt es
s.ToInt ()
und s.ToIntDef (Alternativzahl)
So etwas ähnliches müsste es in std::string auch geben.
| Quote: | Sollte man sich eine eigene Funktion schreiben, die das macht?
|
Erscheint mir eher überflüssig.
--
Mfg Karl Jenz
http://karl.jenz.bei.t-online.de
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Rolf Magnus Guest
|
Posted: Sat May 01, 2004 10:24 am Post subject: Re: string in Zahl umwandeln |
|
|
Tobias Wollgam wrote:
| Quote: | Hallo.
Verwendet man zum Umwandeln von std::string in eine Zahl z.B. int die
Funktion atoi oder gibt es was besseres?
|
std::ostringstream.
| Quote: | Sollte man sich eine eigene Funktion schreiben, die das macht?
z.B:
int toInt(const std::string& s)
{
return atoi(s.c_str());
}
... damit man jederzeit intern Änderungen machen kann?
Vielleicht möchte man später mal bei einem String, der keine Zahl ist,
eine Exception werfen!?!
|
Damit sprichst du den größten Schwachpunk von atoi an. Es gibt dir keine
Auskunft darüber, ob die Konvertierung erfolgreich war.
int toInt(const std::string& s)
{
int retval;
std::stringstream stream(s);
if (! (stream >> retval))
throw SomeException();
return retval;
}
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Kurt Watzka Guest
|
Posted: Sun May 02, 2004 4:33 am Post subject: Re: string in Zahl umwandeln |
|
|
Rolf Magnus wrote:
| Quote: | Tobias Wollgam wrote:
Hallo.
Verwendet man zum Umwandeln von std::string in eine Zahl z.B. int die
Funktion atoi oder gibt es was besseres?
std::ostringstream.
|
Ich glaube Du meinst std::istringstream (Er will String in Zahl, nicht
Zahl in String)
Kurt Watzka
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Rolf Magnus Guest
|
Posted: Sun May 02, 2004 10:47 am Post subject: Re: string in Zahl umwandeln |
|
|
Kurt Watzka wrote:
| Quote: | Rolf Magnus wrote:
Tobias Wollgam wrote:
Hallo.
Verwendet man zum Umwandeln von std::string in eine Zahl z.B. int
die Funktion atoi oder gibt es was besseres?
std::ostringstream.
Ich glaube Du meinst std::istringstream (Er will String in Zahl,
nicht Zahl in String)
|
Richtig. Ich hab da falschrum gedacht. Wie man in meinem Beispiel dann
auch sieht, hätte ich eh eher einen stringstream genommen. Ich verstehe
sowieso den Sinn hinter dieser i/o/nix-stream-Klassenhierarchie.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Helmut Zeisel Guest
|
Posted: Mon May 03, 2004 6:48 am Post subject: Re: string in Zahl umwandeln |
|
|
Tobias Wollgam wrote:
| Quote: | Hallo.
Verwendet man zum Umwandeln von std::string in eine Zahl z.B. int die
Funktion atoi oder gibt es was besseres?
|
boost::lexical_cast
http://www.boost.org/libs/conversion/lexical_cast.htm
Helmut
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Mon May 03, 2004 7:21 pm Post subject: Re: string in Zahl umwandeln |
|
|
Hallo,
Rolf Magnus wrote:
| Quote: | Tobias Wollgam wrote:
[atoi]
Vielleicht möchte man später mal bei einem String, der keine Zahl ist,
eine Exception werfen!?!
Damit sprichst du den größten Schwachpunk von atoi an. Es gibt dir keine
Auskunft darüber, ob die Konvertierung erfolgreich war.
int toInt(const std::string& s)
{
int retval;
std::stringstream stream(s);
if (! (stream >> retval))
throw SomeException();
return retval;
}
|
Diese Implementation sagt dir aber auch nicht Bescheid, wenn die Eingabe
z.B. '12abc' war. Dazu müsste man das beispielsweise so ergänzen:
int toInt(const std::string& s)
{
int retval;
char c;
std::stringstream stream(s);
if (! (stream >> retval))
throw SomeException();
if (stream >> c)
throw SomeException();
return retval;
}
So richtig schön finde ich das aber nicht. Ich habe mir bisher immer
mein eigenes atoi geschrieben (ist ja nun nicht wirklich schwer).
Stefan
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|