jak zliczyć kolumny ?

0

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 >.<

0

A jak są oddzielone?

0

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*/
    }
0

Oddzielone spacjami

np:
1 2 56 8 95
15 896 254 789 14 52 36 589 56
14 58 963

2

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
    }
}
0

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?

0

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.

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