J'ai un exemple de programme d'une étape que je veux implémenter dans mon application. Je veux push_back les éléments int sur la chaîne séparément, dans un vecteur. Comment puis-je?Passage d'une chaîne à une chaîne à un vecteur <int>
#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
}
Ceci est un exemple parfait, IMHO, de ce qui est mal avec C++. Dans presque tous les autres langages, ce serait un split sur '', suivi de quelque chose comme .toInt() pour chaque élément. Au lieu de cela, nous avons une collection extrêmement complexe d'algorithmes modélisés en cours d'application. – dicroce
J'entends ce que vous dites dicroce. OTOH, cette approche plus compliquée est plus rapide, puisque vous évitez de créer un tableau temporaire ou une liste de chaînes, et aussi plus puissant - le même code pourrait être utilisé pour copier n'importe quelle sorte de "gamme de valeurs" (représentée par une paire de itérateurs) dans un vecteur. –
C++ 11: 'vecteur nombres (istream_iterator (lineStream), {});' –