String in Int-Array konvertieren in C++
-
Verwenden Sie die Funktionen
std::getlineundstd::stoi, umstringin C++ in das Arrayintzu konvertieren -
Verwendung der Funktionen
std::string::findundstd::stoizur Umwandlung vonstringin einint-Array in C++ -
Verwenden der Funktionen
std::copyundstd::remove_ifzum Konvertieren vonstringinintArray 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++
