String in Int-Array konvertieren in C++
-
Verwenden Sie die Funktionen
std::getline
undstd::stoi
, umstring
in C++ in das Arrayint
zu konvertieren -
Verwendung der Funktionen
std::string::find
undstd::stoi
zur Umwandlung vonstring
in einint
-Array in C++ -
Verwenden der Funktionen
std::copy
undstd::remove_if
zum Konvertieren vonstring
inint
Array in C++
Dieser Artikel zeigt verschiedene Methoden zum Konvertieren von Zeichenketten in int-Arrays in C++.
Verwenden Sie die Funktionen std::getline
und std::stoi
, um string
in C++ in das Array int
zu konvertieren
std::stoi
wird verwendet, um Zeichenkettenwerte in eine vorzeichenbehaftete Ganzzahl umzuwandeln, und es wird ein obligatorisches Argument vom Typ std::string
verwendet. Optional kann die Funktion zwei zusätzliche Argumente annehmen, von denen das erste zum Speichern des Index des letzten nicht konvertierten Zeichens verwendet werden kann. Das dritte Argument kann optional die Zahlenbasis der Eingabe angeben. Beachten Sie, dass wir die durch Kommas getrennten Zahlen als EingabeZeichenkette wie die CSV-Datei annehmen. Daher verwenden wir die Funktion getline
, um jede Zahl zu parsen und den Wert dann an stoi
zu übergeben. Wir speichern auch jede Zahl im std::vector
-Container, indem wir bei jeder Iteration die Methode push_back
aufrufen.
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::stoi;
using std::string;
using std::stringstream;
using std::vector;
int main(int argc, char *argv[]) {
string text = "125, 44, 24, 5543, 111";
vector<int> numbers;
int num;
stringstream text_stream(text);
string item;
while (std::getline(text_stream, item, ',')) {
numbers.push_back(stoi(item));
}
for (auto &n : numbers) {
cout << n << endl;
}
exit(EXIT_SUCCESS);
}
Ausgabe:
125
44
24
5543
111
Verwendung der Funktionen std::string::find
und std::stoi
zur Umwandlung von string
in ein int
-Array in C++
Alternativ können wir eine integrierte Methode find
der Klasse std::string
verwenden, um die Position des Komma-Trennzeichens abzurufen, und dann die Funktion substr
aufrufen, um die Nummer abzurufen. Dann wird das Ergebnis substr
an das stoi
übergeben, das selbst mit der Methode push_back
verkettet ist, um die Zahl im Vektor
zu speichern. Beachten Sie, dass nach der while
-Schleife die Zeile steht, die zum Extrahieren der letzten Nummer in der Sequenz erforderlich ist.
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::stoi;
using std::string;
using std::stringstream;
using std::vector;
int main(int argc, char *argv[]) {
string text = "125, 44, 24, 5543, 111";
vector<int> numbers;
size_t pos = 0;
while ((pos = text.find(',')) != string::npos) {
numbers.push_back(stoi(text.substr(0, pos)));
text.erase(0, pos + 1);
}
numbers.push_back(stoi(text.substr(0, pos)));
for (auto &n : numbers) {
cout << n << endl;
}
exit(EXIT_SUCCESS);
}
Ausgabe:
125
44
24
5543
111
Verwenden der Funktionen std::copy
und std::remove_if
zum Konvertieren von string
in int
Array in C++
Eine andere Methode zum Extrahieren von Ganzzahlen ist die Verwendung des Algorithmus std::copy
in Verbindung mit std::istream_iterator
und std::back_inserter
. Diese Lösung speichert die Zeichenkettenwerte in einem Vektor
und gibt sie an den Stream cout
aus. Sie können jedoch problemlos die Funktion std::stoi
hinzufügen, um jedes Element in den Wert int
zu konvertieren. Beachten Sie jedoch, dass im folgenden Beispielcode die Zahlen nur als Zeichenkettenwerte gespeichert werden.
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::stoi;
using std::string;
using std::stringstream;
using std::vector;
int main(int argc, char *argv[]) {
string text = "125, 44, 24, 5543, 111";
vector<string> nums;
std::istringstream iss(text);
copy(std::istream_iterator<string>(iss), std::istream_iterator<string>(),
std::back_inserter(nums));
for (auto &n : nums) {
n.erase(std::remove_if(n.begin(), n.end(), ispunct), n.end());
cout << n << endl;
}
exit(EXIT_SUCCESS);
}
Ausgabe:
125
44
24
5543
111
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookVerwandter Artikel - C++ String
- Finden Sie das erste sich wiederholende Zeichen in einer Zeichenfolge in C++
- Finden Sie die längste gemeinsame Teilzeichenfolge in C++
- Großschreiben des ersten Buchstabens einer Zeichenfolge in C++
- Vergleich von String und Character in C++
- Entfernen Sie das letzte Zeichen aus einer Zeichenkette in C++
- Abrufen des letzten Zeichens einer Zeichenkette in C++