2016-05-01 4 views
1

Ich habe einen Zeichenkettenvektor, der numerische Werte an jeder Position des Vektors enthält. Ich möchte herausfinden, wie ich mein Programm beurteilen lassen kann, wie die Werte innerhalb der Zeichenkette konvertiert werden, z geeignet.Wie finde ich den richtigen Datentyp zum Konvertieren eines Strings?

vector <string> SeperatedValues; 
SeperatedValues.push_back("22"); 
SeperatedValues.push_back("4.1"); 
SeperatedValues.push_back("80.41"); 
SeperatedValues.push_back("2"); 

Gibt es eingebaute Funktionen, die dies für mich tun können!

Ich kann alles in Doubles umwandeln, aber das ist nicht effizient, da der Wert innerhalb der Zeichenfolge in eine ganze Zahl passen kann und kein Doppel erfordern!

+0

Ich weiß nicht, wo Ihre Zahlen herkommen, aber wie wäre es, sie nicht als 'Strings' zu speichern? :) – CompuChip

+0

Die Standard-Bibliothek hat eine Funktion, die versucht, eine Konvertierung und werfen, wenn es fehlschlägt (seit 'C++ 11'). Aber rohe Gewalt, um den kleinsten möglichen Datentyp zu finden, kann Ihr Programm viel langsamer machen, als einfach einen breiten numerischen Typ zu verwenden. – StoryTeller

+0

@CompuChip Ich würde das gerne machen, da es die Liebe einfacher machen würde, aber diese Zahlen werden aus einem anderen Vektor extrahiert, der eine Mischung aus Zahlen und Zeichen enthält, was mit der Art und Weise zu tun hat, wie sie in mein System putten! :) – Aboudi

Antwort

0

Sie können überprüfen, ob die Zeichenfolge "." Zeichen, wenn es nicht in int konvertiert, sonst zu double

+1

Was ist mit '" 5.36E-10 "', das ist auch ein String für einen Float. Sie sollten immer nach dem greifen, was die Standardbibliothek hat, bevor Sie Ihre eigene Lösung hacken. – StoryTeller

+0

Je nach Gebietsschema "." möglicherweise ein "," (und möglicherweise andere Zeichen - nicht sicher). –

Verwandte Themen