Cześć. Mam kod który w bardzo dużej części polega na strumieniu cin. I teraz mój problem. Mój program wczytuje ze strumienia cin po czym wykonuje kilka działań i to wszystko. Ale co teraz jeśli chciałbym zapętlić działanie programu? Nie da się kilkakrotnie użyć rzeczyz cin. Pomyślałem że mógłbym jako argument podawać to co ma trafić do strumienia cin. Funkcja wkłada to co chce do cin za pomocą cin.putback po czym operuje na danych i powtarza to ile razy chce. Nie wiedziałem czy to będzie działać więc zrobiłem mały teścik, ale program zamiast robić to co trzeba wyłącza się. Funkcja keep_window_open działa na 100%. Oto kod test programu, nie wiem co z nim jest źle.
#include "../../std_lib_facilities.h"
using namespace std;
int main()
{
string input = "Czesc222";
string outputstr;
int outputdig = 0;
for (unsigned int i = 0; i<input.size();++i)
cin.putback(input[i]);
char sign; //w tej czesci wkladam rzeczy do strumienia cin
while(cin.get(sign)) //zeby w tej czesci oszczedzic sobie pisania.
{
if (isalpha(sign)) //sprawdza czy sign jest litera
outputstr += sign;
else if (isdigit(sign)) //sprawdza czy sign jest liczba
{
cin.putback(sign);
cin >> outputdig; //jesli tak wklada spowrotem i wczytuje cala liczbe
}
}
cout << "outputstr == " << outputstr << endl; //testy zeby sie przekonac czy dziala
cout << "outputdig == " << outputdig << endl;
keep_window_open();
return 0; //nie dziala :)
}