Donc j'expérimente avec stringstream en C++ et je me demande pourquoi input3 resterait le même. Si j'ai entré: "test", "testing" et "tester", input1, input2, et input3 auraient respectivement leur variable de chaîne correspondante. Mais quand je re-entrer dans les valeurs disons seulement "test" et "testing", la variable "testeur" serait toujours dans le flux de l'entrée précédente. Comment puis-je l'effacer? Toute aide serait grandement appréciée. Merci!Comment réutiliser un stringstream en C++?
#include <iostream>
#include <string>
#include <sstream>
int main(){
std::string input, input1, input2, input3;
std::string x, y, z;
std::string other;
std::getline(std::cin, input);
std::istringstream getter{input};
getter >> input1 >> input2 >> input3;
while (input1 != "break"){
if (input1 == "test"){
function(input2, input3);
std::getline(std::cin, other); //receive more input
getter.str(other);
getter >> x >> y >> z; //get new data
input1 = x; input2 = y; input3 = z; //check against while loop
}
else{
std::cout << "WRONG!" << std::endl;
std::getline(std::cin, input);
getter >> input1 >> input2 >> input3;
}
}
return 0;
}
'getter.str (std :: string())' devrait faire l'affaire. (à condition que ce soit le flux que vous essayez d'effacer) Faites-moi savoir si cela ne fonctionne pas pour vous. – Phixle
Que diriez-vous d'une [affectation] simple (http://en.cppreference.com/w/cpp/io/basic_istringstream/operator%3D) comme 'getter = std :: istringstream {otherinput}'? –
@Phixle J'ai essayé ça et ça n'a pas marché. Est-il possible de supprimer un flux, de recevoir des entrées et de l'insérer dans le même flux avec les mêmes variables? – programmer2222