Strumień wejściowy.

0

Witam. Pisze ćwiczenie na SPOJ ( 549. Proste dodawanie) i chce wczytać całą linię ze strumienia wejsciowego. Użyłem funkcji getline. Jednak nie wpisuje do zmiennej zawartosci strumienia. oto kod:

 #include <iostream>
#include <cmath>
#include <sstream>
#include <string>
#include <cstdio>

using namespace std;

string ToString(int i)
{
    ostringstream ss;
    ss << i;
    string str = ss.str();
    return str;
}
int toInt(string t)
{
    int i;
    istringstream iss(t);
    iss>>i;
    return i;
}
int main()
{
    int ileSumowan,ileLiczb,j;

    string liczba;
    do{
     cin>>ileSumowan;
    }while(ileSumowan>=0 && ileSumowan<=100);
    int* tab = new int[ileSumowan];
    for(int i=0;i<ileSumowan;i++)
    {
        j=0;
        cin>>ileLiczb;
        cin.ignore();
        string temp="";
        getline(cin,temp);
        cout<<temp<<endl; //nie wypisuje zawartosci temp
        return 0; //umiescilem tutaj return by sprawdzić czy wejscie dobrze działa a reszty kodu nie pisałem eszcze dlatego while jest puste.
        while(j<ileLiczb)
        {

            do{

            }while(true);
        }
    }
}

Myślałem że samo getline jest źle uzupełnione lecz przy przeklejeniu paru linii kodu, od cin>>ileLiczb do return normalnie wypluło linie wprowadzone z klawiatury.

1

W pierwszym wierszu znajduje się liczba t testów (0 < t < 100) Każdy test opisany jest w następujący sposób. W pierwszym wierszu dana jest liczba n - liczba liczb do zsumowania. Następnie podanych jest n liczb pooddzielanych spacją.

Nie potrzebujesz zaciągać ze strumienia stringa tylko po to, by potraktować go zaraz znowu jak strumień i wyciągnąć z niego liczbę.

#include <iostream>
using namespace std;

int main() {
	size_t tests = 0;
	cin >> tests;
	while(tests --> 0){
		size_t count = 0;
		cin >> count;
		
		int sum = 0;
		while(count--){
			int number = 0;
			cin >> number;
			sum += number;
		}
		
		cout << sum << endl;
	}
	return 0;
}

czy tam

#include <iostream>
using namespace std;

template<typename T>
T read(istream &in = cin){
	T result;
	cin >> result;
	return result;
}

int main() {
	size_t tests = read<int>();
	while(tests --> 0){
		size_t count = read<int>();
		
		int sum = 0;
		while(count--){
			sum += read<int>();
		}
		
		cout << sum << endl;
	}
	return 0;
}
0

No, tylko że tylko tak w miare rozumiem jak to trzeba zrobić. Możesz podpowiedzieć w jaki sposób byś widział fragment kodu odpowiedzialny za wyciaganie danych? chociażby w pseudokodzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1