Statische Typisierung wird in C++ verwendet. Um ein Programm zu schreiben, müssen Variablen als bestimmte Typen definiert werden. Manchmal müssen Eingaben von der Konsole oder einer Datei gelesen werden. In diesem Fall werden dem Programm String-Daten übergeben. Um sie in andere Datentypen zu konvertieren, sind spezielle Operationen erforderlich. In diesem Artikel wird eine C++-Methode zum Konvertieren einer Zeichenfolge in eine Gleitkomma-Ganzzahl bereitgestellt. Es gibt verschiedene Methoden, mit denen Sie dies erreichen können. Erkunden Sie jeden von ihnen einzeln.
Streams sind ein großartiges Werkzeug in C++. Beispiele für diese Streams sind Dateistreams, Standard-Eingabe-/Ausgabestreams usw. stringstream ist ein anderer Stream. Es funktioniert, indem es eine Zeichenfolge als Eingabe akzeptiert, ähnlich wie bei anderen Streams. Wir müssen die Sstream-Header-Datei importieren, um Stringstream verwenden zu können. Streaming-Daten können mit dem Einfügungsoperator (>>) oder dem Extraktionsoperator (
#include < sstream > stringstream streamObject ( <a string input> );
Um einen bestimmten Eingabetyp mithilfe eines Streams zu lesen, lautet die Syntax wie folgt -
<data type> variable; streamObject >> variable;
Werfen wir einen Blick auf den Algorithmus, um zu verstehen, wie er insgesamt funktioniert.
#include <iostream> #include <sstream> using namespace std; float solve( string myString) { float x; stringstream ss( myString ); ss >> x; return x; } int main() { string aNumber = "3.14159"; float convNumber = solve( aNumber ); cout << "The given number is: " << convNumber << endl; cout << "6.5 more than the given number is: " << convNumber + 6.5 << endl; }
The given number is: 3.14159 6.5 more than the given number is: 9.64159
Aus diesem Beispiel geht hervor, dass die Zahl von einem String-Objekt abgerufen wird. Da es sich um tatsächliche Gleitkommadaten handelt, können wir in Gleitkommaschreibweise 6,5 zu sich selbst addieren und das Ergebnis anzeigen.
Ein vergleichbarer Ansatz (der auch in C funktioniert) ist die Verwendung der Funktion sscanf(). Diese Funktion akzeptiert ein Zeichenarray als Eingabe und eine Formatzeichenfolge, genau wie die Standardfunktion scanf(). Jetzt liest es den angeforderten Wert aus der Zeichenfolge und hängt ihn an die Variable an, auf die die Variablenadresse zeigt. Bitte beachten Sie die Syntax der Funktion sscanf().
scanf ( <a string input>, <format string>, address(s) of variable );
Werfen wir einen Blick auf den Algorithmus, um zu verstehen, wie er insgesamt funktioniert.
#include <iostream> #include <sstream> using namespace std; float solve( string myString) { float x; sscanf( myString.c_str(), "%f", &x ); return x; } int main() { string aNumber = "6.8"; float convNumber = solve( aNumber ); cout << "The given number is: " << convNumber << endl; cout << "2.5 more than the given number is: " << convNumber + 2.5 << endl; }
The given number is: 6.8 2.5 more than the given number is: 9.3
Die Anwendung funktioniert genauso wie zuvor, es gibt jedoch ein paar Dinge, auf die wir achten müssen. Die sscanf()-Methode unterstützt keine C++-ähnlichen String-Objekte. Es benötigt ein C-ähnliches Zeichenarray. Um dies zu erreichen, verwenden wir die Methode c_str(), um das bereitgestellte String-Argument in ein C-ähnliches Zeichenarray zu konvertieren.
Die Verwendung der stof()-Methode aus der Header-Datei „Strings“ ist eine weitere schnelle und einfache Möglichkeit, einen String in eine Ganzzahl umzuwandeln. Diese Funktion konvertiert ein String-Objekt in die entsprechende Gleitkommazahl, nachdem es als Eingabe empfangen wurde.
#include <string> stof ( <integer in string format> );
#include <iostream> #include <sstream> using namespace std; float solve( string myString) { float x; x = stof( myString ); return x; } int main() { string aNumber = "6.8"; float convNumber = solve( aNumber ); cout << "The given number is: " << convNumber << endl; cout << "2.5 more than the given number is: " << convNumber + 2.5 << endl; }
The given number is: 6.8 2.5 more than the given number is: 9.3
Obwohl atof() auch in C verfügbar ist, entspricht es stof. Zeichenfolgen können im Zeichenarray-Format übermittelt werden. Sie können es erhalten, indem Sie die cstdlib-Bibliothek importieren. Ansonsten gibt es keinen wirklichen Unterschied. Schauen wir uns die Syntax an.
#include <cstdlib> atof ( <floating number in character array format> );
#include <iostream> #include <sstream> using namespace std; float solve( string myString) { float x; x = atof( myString.c_str() ); return x; } int main() { string aNumber = "8.9"; float convNumber = solve( aNumber ); cout << "The given number is: " << convNumber << endl; cout << "6.5 more than the given number is: " << convNumber + 6.5 << endl; }
The given number is: 8.9 6.5 more than the given number is: 15.4
Es gibt mehrere Möglichkeiten, einen String in einen Float umzuwandeln. Die ersten beiden Methoden (mit stringstream und sscanf()) sind allgemeine Möglichkeiten, einen String in einen beliebigen Datentyp zu konvertieren, ohne etwas anderes zu ändern; stof() und atof() Diese Funktionen werden nur zum Konvertieren von Zeichenfolgen in Gleitkommazahlen verwendet. Andere Funktionen, die in andere Datentypen konvertieren, sind gleichwertig. Da es sich um C-basierte Funktionen handelt, akzeptieren sscanf und atof() keine String-Objekte. Bevor wir sie verwenden, müssen wir die Zeichenfolge mithilfe der Funktion c_str() in ein Zeichenarray konvertieren.
Das obige ist der detaillierte Inhalt vonÜbersetzen Sie Folgendes ins Chinesische: C++-Programm zum Konvertieren von String in Float. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!