string to int

Thomasio

Erfahrenes Mitglied
Ich brauche eine ganz kurze Konvertierung von std::string nach int
Alle Lösungen die ich im Web gefunden habe sind recht umständlich, weil immer alle Möglichkeiten berücksichtigt werden, wie z.B. wenn der string keine Zahl ist, oder ausser der Zahl noch etwas anderes beinhaltet

In meinem Fall kann ich absolut sicher sein, dass im string immer eine Zahl zwischen 0 und 25 steht und sonst gar nichts
Wie kann ich in diesem Fall am schnellsten zu folgendem Ergebnis kommen?

std::string myString = "17";
int Zahl = intval(myString); // So kurz sollte es sein, nur halt auch funktionieren

und wenn wir gerade dabei sind, wenn ich das mal habe, brauche ich es kurz danach andersrum, da hätte ich zumindest einen Lösungsansatz, über konvertieren zu char und dann ausrechnen, suche aber auch da nach einer schnelleren Lösung, falls möglich

int Zahl = 17;
std:string myString(Zahl); // oder so ähnlich
 
nicht wirklich, oder anders gesagt, das ist, was ich schon als Lösungsansatz habe,
itoa und atoi funktionieren prima von char* to int und umgekehrt, aber dabei muss ich meinen std::string zuerst in char* konvertieren, und genau den Schritt würde ich mir gerne sparen, sofern das irgendwie möglich ist
 
Du könntest das mit einem Stringstream erledigen:
C++:
#include <string>
#include <sstream>

// String -> Int

std::string myString = "17";

std::stringstream sstr(myString);
int Zahl;
sstr >> Zahl;
C++:
#include <string>
#include <sstream>

// Int -> String

int Zahl = 17;

std::stringstream sstr;
sstr << Zahl;
std::string myString = sstr.str();
Gruß
MCoder
 
danke, werde mal versuchen welche der beiden Lösungen schneller läuft,
falls jemand einen noch schnelleren Weg kennt, bitte melden
 
Hmm,

vielleicht habe ich es nicht richtig verstanden,
aber was soll den noch schneller sein als

int Zahl = intval(myString.c_str());

Gruß
Gerhard
 
@Gerhard: Das "intval" muss man halt erst noch kreieren. Eine solche Funktion gibt's (glaube ich) bei PHP, aber nicht bei C/C++.

Gruß
MCoder
 
ach je, hab ich mich wieder als Anfänger entlarvt, logisch, geht in 1 Schritt beides auf einmal

int Zahl = atoi(myString.c_str()); // kürzer gehts wirklich nimmer

und wie dann andersrum?

std:string myString(itoa(Zahl)); // geht das?
 
Wenn, dann eher so:
C++:
itoa(nZahl, (char *)mystring.c_str(), 10);

Wenn man allerdings C++ programmiert, sollte man meiner Meinung nach aber auf atoi, itoa & Co. verzichten und konsequent mit der STL arbeiten und da wären die stringstreams die entsprechende Lösung.

Gruß
MCoder
 

Neue Beiträge

Zurück