[C++]Wczytywanie danych z linii

Awatar użytkownika
Haskis
Użytkownik
Użytkownik
Posty: 158
Rejestracja: 12 gru 2009, o 15:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 55 razy
Pomógł: 14 razy

[C++]Wczytywanie danych z linii

Post autor: Haskis » 14 lip 2011, o 20:59

Pewno proste zadanie, ale nie wiem jakiej instrukcji/ funkcji użyć.
Wczytaj dane do tablicy z całej linii.
Np. Wczytaj:
1 2 3 242 5251 21 5 151 2
Nie ma żadnego znaku kończącego ani dokładnie sprecyzowanej liczby znaków(mniej niż 100). Jak widać jest tylko koniec linii. Jak to zrobić ?

Afish
Moderator
Moderator
Posty: 2823
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 354 razy

[C++]Wczytywanie danych z linii

Post autor: Afish » 14 lip 2011, o 21:14

Wczytać linię do stringstreama, a potem z niego wyciągnąć wszystkie liczby.

Awatar użytkownika
Haskis
Użytkownik
Użytkownik
Posty: 158
Rejestracja: 12 gru 2009, o 15:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 55 razy
Pomógł: 14 razy

[C++]Wczytywanie danych z linii

Post autor: Haskis » 14 lip 2011, o 21:54

Byłbym wdzięczny jakbyś mi tą instrukcję napisał oraz bibliotekę

Afish
Moderator
Moderator
Posty: 2823
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 354 razy

[C++]Wczytywanie danych z linii

Post autor: Afish » 14 lip 2011, o 23:07

Kod: Zaznacz cały

#include <iostream>
#include <sstream>
using namespace std;

int main(){
	stringstream strstream;
	string str;
	getline(cin,str);
	strstream<<str;
	while(strstream.good()){
		int number;
		strstream>>number;
		cout<<number<<endl;
	}
	return 0;
}
Działa, o ile zaraz za ostatnią liczbą jest znak nowej linii. Jeżeli tak nie jest, to wypadałoby przed wypisaniem sprawdzić, czy wszystko jest okej. Z drugiej strony, jeżeli input jest dokładnie sprecyzowany, to nie ma co bawić się w stringstreama, tylko po odczytaniu każdej liczby sprawdzić (używając getchara), czy następny znak jest znakiem nowej linii i jeżeli tak jest, to zakończyć odczyt.

ODPOWIEDZ