c++ - from - Pasar de string a stringstream a vector<int>
string to float c++ (2)
Tengo este programa de ejemplo de un paso que quiero implementar en mi aplicación. Quiero push_back los elementos int en la cadena por separado, en un vector. ¿Cómo puedo?
#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
}
int num;
while (lineStream >> num) numbers.push_back(num);
Este es un ejemplo clásico de std::back_inserter
.
copy(istream_iterator<int>(lineStream), istream_iterator<int>(),
back_inserter(numbers));
Puede crear el vector desde el principio, si lo desea
vector<int> numbers((istream_iterator<int>(lineStream)),
istream_iterator<int>());
Recuerde poner paréntesis alrededor del primer argumento. El compilador cree que es una declaración de función de lo contrario. Si usa el vector para obtener solo iteradores para los números, puede usar los iteradores istream directamente:
istream_iterator<int> begin(lineStream), end;
while(begin != end) cout << *begin++ << " ";