C++ funkcja zwracająca wektor

0

Witam. Mam niemały problem. Muszę napisać funkcję, która na koniec zwróci tablicę stringów wektor, który tworzy na podstawie pliku tekstowego.
Dane wejsciowe:
e,qwe,zc,sd
gd,sf,asd,s

itd.
chodzi o to, ze kazdy wyraz ma zawierac sie w oddzielnej komorce, więc postanowiłem wpakować to w string klucz[wysokosc][szerokosc] wektor.
Jedyny problem - co zrobić, aby funkcja zwróciła pożądaną tablicę pożądany wektor?

szerokosc i wysokosc są polami klasy Dane

#include "Dane.h"
#include <vector>

void Dane::pobierzDane()
{
    vector < string > cont;
    fstream plik;
    int indeks=0;
    plik.open( "dane.txt", ios::in );
    if( plik.good() )
    {

        szerokosc = 2;
        wysokosc = 1;
        string linia, linia_zapas;
        getline( plik, linia );
        for(int i=0;linia[i]>=' ';i++){if(linia[i]==',') szerokosc++; } //liczymy szerokosc tablicy
        while( !plik.eof() )
          {
            getline( plik, linia_zapas ); if(linia_zapas[0])wysokosc++; //liczmy wysokosc tablicy
          }
        plik.close();
    }
    else cout << "Error! Nie udalo sie otworzyc pliku!" << endl;
    plik.open( "dane.txt", ios::in );
    string klucz;
    cout<< "wys "<< wysokosc << " szer "<< szerokosc <<endl;
    while( !plik.eof() )
      {
        string linia;
        getline( plik, linia );
        int j=0;
        linia+=",";
        for(int i=0; linia[i]>=32;++i)
            {
                 if(linia[i]!=44) {klucz+=linia[i];} //jezeli rozne od przecinka
                else {cont.push_back(klucz);
                klucz.clear();}
             }// for()

      }//zamyka while
    plik.close();

    for( int i = 0; i < cont.size(); i++ )
    {cout<<cont[i]<<endl;}
    return ;
};






edit: tak sobie przeglądam to forum i natknąłem się na takie coś jak "vector". może zamiast do tablicy stringów da się to jakoś w ten wektor upakować? o.O

1

Jedyny problem - co zrobić, aby funkcja zwróciła pożądaną tablicę pożądany wektor?

Ale w czym problem?

vector<string> Dane::pobierzDane()
{
    vector<string> cont;

    cont.push_back("jakiś");
    cont.push_back("wektor");
    cont.push_back("stringów");

    return cont;
}
0

masz racje. Nie zauważyłem, że

#include <vector>

miałem w dane.cpp, a w dane.h już nie i kompilator ciągle wywalał mi błąd :/
Zrobiłem jednak coś innego, funkcja przyjęła postać

void Dane::pobierzDane(vector<string> &cont)

, ponieważ gdzieśtam wyczytałem, że przekazywanie dużych wektorów jest mało wydajne. leci plus!

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