c string conversion functions
Dieses Tutorial behandelt die C ++ - Zeichenfolgenkonvertierungsfunktionen, mit denen die Zeichenfolge in int & double und int in eine Zeichenfolge usw. konvertiert werden kann.
Es ist üblich, Zeichenfolgen in Zahlen wie Integer und Double zu konvertieren, wenn wir C ++ - Anwendungen entwickeln.
In diesem Thema werden die Funktionen behandelt, mit denen die Zeichenfolgen effektiv in int & double und numerische Werte in eine Zeichenfolge konvertiert werden können.
=> Lesen Sie hier die beliebte C ++ - Schulungsserie.
Was du lernen wirst:
Konvertierungsfunktionen für C ++ - Zeichenfolgen
Wenn wir Anwendungen mit C ++ programmieren, müssen Daten von einem Typ in einen anderen konvertiert werden. Die Konvertierung von Daten sollte so erfolgen, dass beim Konvertieren der vorhandenen Daten in einen neuen Typ überhaupt keine Daten verloren gehen. Dies gilt insbesondere dann, wenn wir Zeichenfolgendaten in Zahlen konvertieren und umgekehrt.
In diesem Tutorial werden die verschiedenen Funktionen zum Konvertieren von std :: string-Objekten in numerische Datentypen einschließlich Integer und Double erläutert.
Konvertieren von Zeichenfolgen in numerische Typen in C ++
Im Allgemeinen gibt es zwei gängige Methoden zum Konvertieren von Zeichenfolgen in Zahlen in C ++.
- Verwenden von stoi- und atoi-Funktionen, die für alle numerischen Datentypen repliziert werden.
- Stringstream-Klasse verwenden.
Lassen Sie uns jede Methode im Detail diskutieren.
Verwenden von Stoi- und Atoi-Funktionen
Die Klasse std :: string unterstützt verschiedene Funktionen zum Konvertieren von Strings in Integer, Long, Double, Float usw. Die von std :: string unterstützten Konvertierungsfunktionen sind wie folgt tabellarisch aufgeführt:
Funktion | Beschreibung |
---|---|
Stehen stol stoll | Konvertiert Zeichenfolge in Ganzzahl (einschließlich langer und langer langer Typen). |
atoi Atoll Atoll | Konvertiert die Byte-Zeichenfolge in eine Ganzzahl (einschließlich langer und langer langer Typen). |
stand auf Staub verkauft | Konvertiert Byte-Strings in Gleitkommawerte (einschließlich Float-, Double- und Long-Double-Typen). |
stoul stoull | Konvertiert die Byte-Zeichenfolge in eine vorzeichenlose Ganzzahl (einschließlich vorzeichenloser langer und vorzeichenloser langer langer Typen). |
Hinweis: Mit Ausnahme der Funktionen zum Konvertieren von Byte-Strings (atoi) sind alle anderen Konvertierungsfunktionen ab C ++ 11 vorhanden. Jetzt werden wir die Konvertierungsfunktionen zum Konvertieren von Zeichenfolgen in int und Zeichenfolgen in double diskutieren.
String to int Mit stoi () und atoi ()
Stehen()
Funktionsprototyp: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Parameter:
str => Zu konvertierender String
pos => Adresse einer Ganzzahl zum Speichern der Anzahl der verarbeiteten Zeichen; Standard = 0
base => Die Zahlenbasis; Standard = 0
Rückgabewert: Ganzzahl, die der angegebenen Zeichenfolge entspricht.
Ausnahmen: std :: invalid_argument => Wenn keine Konvertierung durchgeführt werden kann.
Std :: out_of_range => Wenn der konvertierte Wert außerhalb des Bereichs des Ergebnistyps liegt.
Beschreibung: Die Funktion stoi () verwendet eine Zeichenfolge als Argument und gibt einen ganzzahligen Wert zurück. Es wird eine Ausnahme ausgelöst, wenn der konvertierte Wert außerhalb des Bereichs liegt oder wenn die Konvertierung nicht durchgeführt werden kann.
Nehmen wir ein Programmierbeispiel, um diese Funktion besser zu verstehen.
#include #include using namespace std; int main() { string mystr1 = '53'; string mystr2 = '3.142'; string mystr3 = '31477 with char'; int strint1 = stoi(mystr1); int strint2 = stoi(mystr2); int strint3 = stoi(mystr3); cout << 'stoi('' << mystr1 << '') is ' << strint1 << '
'; cout << 'stoi('' << mystr2 << '') is ' << strint2 << '
'; cout << 'stoi('' << mystr3 << '') is ' << strint3 << '
'; }
Ausgabe:
steht ('53') ist 53
steht ('3.142') ist 3
stoi ('31477 mit char') ist 31477
Im obigen Programm haben wir die Stoi-Funktion mit drei verschiedenen Zeichenfolgen verwendet. Beachten Sie, dass die Funktion beim Konvertieren der Zeichenfolgendaten in einen ganzzahligen Wert die Leerzeichen oder andere Zeichen verwirft.
Im Fall von mystr2 (3.142) hat die Funktion daher alles nach dem Dezimalpunkt verworfen. In ähnlicher Weise wurde im Fall von mystr3 („31477 with char“) nur die Nummer berücksichtigt. Andere Inhalte der Zeichenfolge wurden verworfen.
atoi ()
Funktionsprototyp: int atoi (const char * str);
Parameter: str => Zeiger auf nullterminierte Bytezeichenfolge.
Rückgabewert:
Erfolg => Ganzzahliger Wert entsprechend dem Argument str.
Fehler => Nicht definiert, wenn der konvertierte Wert außerhalb des Bereichs liegt.
0 => Wenn keine Konvertierung durchgeführt werden kann.
Beschreibung: Diese Funktion konvertiert eine Bytezeichenfolge in einen ganzzahligen Wert. Die Funktion atoi () verwirft alle Leerzeichen, bis ein Nicht-Leerzeichen gefunden wird, und verwendet dann die Zeichen einzeln, um eine gültige Ganzzahlendarstellung zu bilden, und konvertiert sie in eine Ganzzahl.
Beispiel einer atoi-Funktion
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; const char *mystr4 = 'words with 3'; int mynum1 = atoi(mystr1); int mynum2 = atoi(mystr2); int mynum3 = atoi(mystr3); int mynum4 = atoi(mystr4); cout << 'atoi('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'atoi('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'atoi('' << mystr3 << '') is ' << mynum3 << '
'; cout << 'atoi('' << mystr4 << '') is ' << mynum4 << '
'; }
Ausgabe:
atoi ('24') ist 24
atoi ('3.142') ist 3
atoi ('23446 mit char') ist 23446
atoi ('Wörter mit 3') ist 0
Wie im obigen Programm gezeigt, nimmt die atoi-Funktion eine Byte-Zeichenfolge als Argument und konvertiert sie in einen ganzzahligen Wert. Die Leerzeichen oder andere Zeichen werden verworfen. Wenn der konvertierte Wert außerhalb des Bereichs liegt, wird 0 zurückgegeben.
String zum Verdoppeln Mit stod ()
Funktionsprototyp: stod (const std :: string & str, std :: size_t * pos = 0);
Parameter:
str => Zu konvertierender String
pos => Adresse einer Ganzzahl zum Speichern der Anzahl der verarbeiteten Zeichen; Standard = 0
Rückgabewert: Doppelter Wert, der der angegebenen Zeichenfolge entspricht.
Ausnahmen:
std :: invalid_argument => Wenn keine Konvertierung durchgeführt werden kann.
std :: out_of_range => Wenn der konvertierte Wert außerhalb des Bereichs des Ergebnistyps liegt.
Beschreibung: Diese Funktion konvertiert eine Zeichenfolge in einen Gleitkommawert. Die Funktion stod () verwirft alle Leerzeichen, bis ein Nicht-Leerzeichen gefunden wird, und verwendet dann die Zeichen nacheinander, um eine gültige Gleitkommazahlendarstellung zu bilden, und konvertiert sie in Gleitkommazahlen.
Sehen wir uns ein Beispiel an, das diese Funktion demonstriert.
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; double mynum1 = stod(mystr1); double mynum2 = stod(mystr2); double mynum3 = stod(mystr3); cout << 'stod('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'stod('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'stod('' << mystr3 << '') is ' << mynum3 << '
'; }
Ausgabe:
stod ('24') ist 24
stod ('3.142') ist 3.142
stod ('23446 with char') ist 23446
Das obige Programm demonstriert die Verwendung der Funktion 'stod'. Die Ausgabe gibt die konvertierten Doppelwerte der angegebenen Zeichenfolgen an.
Stringstream-Klasse verwenden
Die Verwendung der Stringstream-Klasse ist der einfachste Weg, um String-Werte in numerische Werte umzuwandeln.
Wir werden die Stringstream-Klasse in unseren nachfolgenden Tutorials ausführlich lernen. Im Folgenden finden Sie ein C ++ - Programm, das die Konvertierung von Zeichenfolgen in numerische Werte demonstriert.
#include #include using namespace std; int main() { string str = '2508'; stringstream sstream(str); int num = 0; sstream >> num; double dNum=0.0; string doublestr = '3.142'; stringstream dstream(doublestr); dstream >>dNum; cout << 'Value of num : ' << num< Ausgabe:
Verwendung der Github-Erweiterung für Visual Studio
Wert von num: 2508
Wert von dNum: 3.142
Im obigen Programm sehen wir, dass wir ein String-Objekt deklariert haben. Dann deklarieren wir ein Stringstream-Objekt und übergeben die Zeichenfolge an dieses Objekt, sodass die Zeichenfolge in ein Stringstream-Objekt konvertiert wird. Anschließend wird dieses Stringstream-Objekt mit dem Operator '>>' an einen ganzzahligen Wert übergeben, der das Stringstream-Objekt in eine Ganzzahl konvertiert.
In ähnlicher Weise haben wir auch die Zeichenfolge in double konvertiert. Solange der Operator '>>' den Datentyp unterstützt, können wir eine Zeichenfolge mithilfe eines Stringstream-Objekts in einen beliebigen Datentyp konvertieren.
Convert int In string In C ++
Wir können auch numerische Werte in Zeichenfolgenwerte konvertieren. Es gibt zwei Methoden zum Konvertieren von numerischen Werten in Zeichenfolgenwerte, und wir werden diese unten diskutieren.
Verwenden der Funktion to_string ()
Funktionsprototyp: std :: string to_string (Typwert);
Parameter: value => Zu konvertierender numerischer Wert
Rückgabewert: Zeichenfolgenwert, der den konvertierten Wert enthält.
Ausnahme: kann std :: bad_alloc werfen
Beschreibung: Diese Funktion to_string () konvertiert den als Argument übergebenen numerischen Wert in einen Zeichenfolgentyp und gibt die Zeichenfolge zurück.
Sehen wir uns ein Beispiel für diese Funktion mit einem C ++ - Programm an.
#include #include // used for string and to_string() using namespace std; int main() { int int_val = 20; float flt_val = 30.50; string str_int = to_string(int_val); string str_float = to_string(flt_val); cout << 'The string representation of integer : '; cout << str_int << endl; cout << 'The string representation of float : '; cout << str_float << endl; return 0; }
Ausgabe:
Die Zeichenfolgendarstellung von Integer: 20 Die Zeichenfolgendarstellung von float: 30.500000
Hier haben wir zwei Variablen vom Typ Integer und Float. Dann rufen wir die Methode to_string zweimal mit dem Argument integer und float auf und konvertieren beide Werte in Zeichenfolgenwerte. Schließlich zeigen wir die konvertierten Werte an.
Beachten Sie, dass das Konvertieren des Gleitkommawerts in die Zeichenfolge zu unerwarteten Ergebnissen führen kann, da die Anzahl der signifikanten Stellen bei der Methode to_string Null sein kann.
Stringstream-Klasse verwenden
Mit der Stringstream-Klasse deklariert der Stringstream zunächst ein Stream-Objekt, das einen numerischen Wert als Stream in das Objekt einfügt. Anschließend wird die Funktion „str ()“ verwendet, um einen numerischen Wert intern in einen String umzuwandeln.
Beispiel:
#include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; } #include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; }
Ausgabe:
Die aus einer Ganzzahl gebildete Zeichenfolge lautet: 26082019
Die aus double gebildete Zeichenfolge lautet: 3.142
In dieser Auflistung haben wir eine Ganzzahl und einen Doppelwert definiert. Dann haben wir das ostringstream-Objekt, mit dem wir den numerischen Wert in das stringstream-Objekt umwandeln. Dies verwendet die ‘<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Fazit
In diesem Tutorial haben wir Konvertierungsfunktionen erläutert, mit denen eine Zeichenfolge in numerische Typen und numerische Typen zurück in eine Zeichenfolge konvertiert werden. Wir haben die Funktionen und Beispiele der Funktionen stoi (), stod (), atoi (), to_string () im Detail gesehen. Wir haben auch einige der Funktionen und Methoden der Stringstream-Klasse besprochen, die uns bei den genannten Konvertierungen helfen.
Empfohlene Lektüre = >> Konvertieren Sie String in Integer in Java und Methoden zum Konvertieren von Int in String in Java
In unserem nächsten Tutorial lernen wir Konvertierungsfunktionen für Zeichendatentypen.
=> Lesen Sie hier die ausführlichen C ++ - Schulungsanleitungen.
Literatur-Empfehlungen
- Python-String-Funktionen
- C ++ - Zeichenkonvertierungsfunktionen: char to int, char to string
- Java String mit String Buffer und String Builder Tutorial
- Zeichenfolgenfunktionen In C ++: getline, Teilzeichenfolge, Zeichenfolgenlänge und mehr
- C # Konvertieren von Zeichenfolgen in Int mithilfe von Parse-, Convert- und TryParse-Methoden
- VBScript-Zeichenfolgenfunktionen: VBScript inStr-, Replace-, Mid- und Trim-Funktionen
- Python String Split Tutorial
- C # String Tutorial - String-Methoden mit Codebeispielen