Wenn man von String-Vektor zu string
-
19-08-2019 - |
Frage
Ich habe dieses Beispielprogramm eines Schrittes, die ich auf meine Anwendung implementieren möchten. Ich mag die int-Elemente auf der Saite separat push_back, in einen Vektor. Wie kann ich?
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main(){
string line = "1 2 3 4 5"; //includes spaces
stringstream lineStream(line);
vector<int> numbers; // how do I push_back the numbers (separately) here?
// in this example I know the size of my string but in my application I won't
}
Lösung
int num;
while (lineStream >> num) numbers.push_back(num);
Andere Tipps
Dies ist ein klassisches Beispiel für std::back_inserter
.
copy(istream_iterator<int>(lineStream), istream_iterator<int>(),
back_inserter(numbers));
Sie können den Vektor erstellen von Anfang an, wenn Sie wünschen
vector<int> numbers((istream_iterator<int>(lineStream)),
istream_iterator<int>());
Denken Sie daran, Klammern um das erste Argument zu setzen. Der Compiler denkt, es ist eine sonst Funktionsdeklaration. Wenn Sie den Vektor für die gerade erst Iteratoren für die Zahlen verwenden, können Sie die istream Iteratoren verwenden, um direkt:
istream_iterator<int> begin(lineStream), end;
while(begin != end) cout << *begin++ << " ";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow