Ajouter un commentaire

fredericmazue

Quote:
il considere que le 2eme argument fait partie du 2e cin

En effet les flux du C++ lisent une ligne entière quand tu fais cin>> nbl;

Quote:
donc pour lui il considere un espace comme un delimiteur

En effet c'est spécifié comme ça dans le standard.

Quote:
comment puis-je faire pour que chaque demande se fasse sur une ligne pour chacunes

Ben tu l'as presque fait déjà. Au lieu de tester eof, simplmeent tu laisse tomber à la trappe ce qui traîne dna sle reste du stringstream. Ah et aussi, il est bon de tester fail() pour savoir si c'est bien un entier qui est extrait.
Exemple
#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int readInt()
{
	int v;
	string s;
	bool ok = false;
	while(!ok)
	{
		cout << "Donnez un entier: ";
		cin >> s;
		stringstream ss(s);
		ss >> v;
		if(ss.fail())
			continue;
		else
			ok = true;
	}
	return v;
}

int main(int argc, char *argv[])
{
	int v = readInt();
	cout << v << endl;
} 

si tu donnes
1 -> tu récupères 1
1 2 -> tu récupères seulement 1
a -> on te demande de ressaisir
a1 -> on de demande de ressaisir
a 1 -> tu récupères 1 (attention :) )

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 X   X  DDD    CCC  V     V   AA  
X X D D C V V A A
X D D C V V AAAA
X X D D C V V A A
X X DDD CCC V A A