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


    }
War es hilfreich?

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
scroll top