J'essaie de faire une tâche simple de lecture de nombres séparés de l'espace de la console dans un C'est ce que j'ai fait jusqu'à présent: p> Cependant, cela nécessite que l'utilisateur appuie un caractère non valide (tel que Dès que l'utilisateur entre des numéros, comme Je ne sais pas combien d'éléments utilisateur entreront, d'où j'utilise S'il vous plaît suggérer la bonne façon de faire cela. p> p> vecteur
A code>) briser le
pendant que code> boucle. Je ne le veux pas. P>
0 2 3 4 5 Code> et appuyez sur
Entrée code> Je veux que la boucle soit cassée. J'ai essayé d'utiliser
iStream_iterator code> et
cin.getline code> aussi, mais je ne pouvais pas le faire fonctionner. P>
vecteur code>. P>
5 Réponses :
Utilisez un getline code> combiné avec un
istringstream code> pour extraire les chiffres.
std::string input;
getline(cin, input);
std::istringstream iss(input);
int temp;
while(iss >> temp)
{
yourvector.push_back(temp);
}
Mais cette méthode nécessite de flancser que je ne sais pas. Pouvez-vous poster un exemple de code?
Oups..ok, je l'ai eu maintenant avec @templatetypedef exemple. Vous vous référez à la fonction gratuite geline code> et non
cin.getline code>.
#include
Élaborer sur la réponse de Jonsque, voici une possibilité, supposant que l'utilisateur entre fidèlement des entiers valides: Ceci va lire et analysera une ligne de nombres entiers valide à partir de CIN code>. Notez que ceci utilise la fonction fonction em> em>
getline code>, qui fonctionne avec
std :: string code> s, et pas
istream :: getline < / code>, qui fonctionne avec des chaînes de style c. p> p>
Ce code devrait vous aider à sortir, il lit une ligne à une chaîne, puis itière sur le dessus, de sortir tous les chiffres.
#include <iostream> #include <sstream> #include <string> int main() { std::string line; std::getline(std::cin, line); std::istringstream in(line, std::istringstream::in); int n; vector<int> v; while (in >> n) { v.push_back(n); } return 0; }
Utilisateur rapide après chaque numéro ou prendre le nombre de numéros à l'avance et en boucle en conséquence. Pas une bonne idée mais j'ai vu cela dans de nombreuses applications. P>
En outre, peut être utile de savoir que vous pouvez stimuler une EOF - Appuyez sur 'Ctrl-Z' (Windows uniquement, des systèmes de type Unix utilisent Ctrl-D) dans la ligne de commande, après avoir terminé vos entrées. Devrait vous aider lorsque vous testez de petits programmes comme celui-ci - sans avoir à taper dans un caractère invalide. P>
Ce serait Ctrl-D sur des systèmes de type UNIX.