Siemka,
Chcę wczytać w pliku tablicę 2 wymiarową. Ale potrzebuję (chyba) do tego jej rozmiaru. Wiersze licze ze string (getline), ale jak policzyć kolumny ?
Może newbie pytanie, ale nie umiem >.<
Siemka,
Chcę wczytać w pliku tablicę 2 wymiarową. Ale potrzebuję (chyba) do tego jej rozmiaru. Wiersze licze ze string (getline), ale jak policzyć kolumny ?
Może newbie pytanie, ale nie umiem >.<
A jak są oddzielone?
Stringa podstawiasz w stringstream'a i zczytujesz z niej liczby póki się da.
Można też napisać coś takiego:
class exws
{
private:
bool cr;
public:
exws():cr(false);
operator bool()const { return cr; }
istream &get(istream &s)
{
cr=false;
while(s)
{
int ch=s.peek();
if(ch=='\n') cr=true;
else if((ch!=' ')&&(ch!='\t')) break;
s.get();
}
}
};
istream &operator>>(istream &s,exws &w) { return w.get(s); }
A teraz wczytujesz z pliku tak:
exws ews;
while(plik)
{
double liczba;
plik>>ews>>liczba;
if(ews) /*ta liczba jest z kolejnego wiersza*/
}
Oddzielone spacjami
np:
1 2 56 8 95
15 896 254 789 14 52 36 589 56
14 58 963
edit: dysekcja daje znać :), więc poprawiam zgodnie z komentarzami:
while(getline(cin, line)) {
stringstream stream(line);
while(stream >> x) {
processNextNumber(x); // cokolwiek chcesz zrobić z tymi danymi
}
}
Nie bardzo potrafię rozgryźć to zliczanie.
co i jak mam zadeklarować?
powiedzmy, ze mam: ifstream &plik
jak to zrobić (?)
string line;
string x; ??
i while'u nie działa >>
a jak zdefiniować procesNextNumber?
string line;
int/double x;
procesNextNumber - robi to co chcesz zrobić z kolejną liczbą w wierszu.
@MarekR22, pewnie pisał z ręki więc drobny błąd. Patrz komentarz.