Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wielokrotny zapis do pliku.

Ostatnio zmodyfikowano 2014-09-10 14:08
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
Wielokrotny zapis do pliku.
» 2014-09-09 15:10:39
Witajcie. Mam taki problem. Otóż potrzebuję znaleźć metodę na tworzenie nowego pliku z każdą iteracją pętli. Mój kod :

C/C++
void zapiszKrok( int krok, const GAPopulation & pop )
{
    int i;
    ofstream file;
    file.open( "Kolejka.txt" );
    string nazwa( "krok" );
    for( i = 0; i <= pop.size() - 1; i++ )
    {
        GAGenome & g = pop.individual( i );
        GABin2DecGenome & genome =( GABin2DecGenome & ) g;
        float v = genome.phenotype( 0 );
        cout << i << "    " << v << "    " << f( v ) << endl;
        file << v << " " << f( v ) << endl;
    }
    file.close();
   
}

Kod ten tworzy nowy plik "Kolejka" . Natomiast mi chodzi o to, aby po każdej iteracji powstawał nowy plik "Kolejka1", "Kolejka2",...,"Kolejka(i)" z dodatkowymi danymi (np. 20 iteracji to 20 plików -> potrzebne mi to jest do obrazowania na wykresie)... chciałem jakoś wrzucić to w pętle, ale nie mam pojęcia za bardzo jak...

Pomożecie jakoś ^^ ?
P-116795
Monika90
» 2014-09-09 15:17:30
P-116797
Anim
Temat założony przez niniejszego użytkownika
» 2014-09-09 15:30:46
hm. nie ukrywam ,że ta wskazówka nie za bardzo mi pomogła :) można prosić jaśniejsze wytłumaczenie ?
Nie jestem biegły w C++. Raczej  siadam do niego raz na pół roku - od projektu do projektu. Mea culpa :)
P-116798
Monika90
» 2014-09-09 15:41:37
Czy dobrze rozumiem, że chcesz by populacja zapisała się do pliku o nazwie "KolejkaNNN.txt" gdzie NNN to wartość zmiennej krok? To jest proste:

C/C++
file.open( "Kolejka" + std::to_string( krok ) + ".txt" );
Jeżeli tego nie da się skompilować to znaczy, że masz stary kompilator więc zrób sobie upgrade, albo wybierz inną metodę sposród tych podanych w artykule.
P-116799
michal11
» 2014-09-09 15:59:01
Albo:
C/C++
std::ostringstream oss;
oss << "Kolejka" << krok << ".txt";
file.open( oss.str() );

I zarówno to co napisałem ja jak i Monika jest w linku który ona podała.
P-116800
Anim
Temat założony przez niniejszego użytkownika
» 2014-09-09 16:23:01
Nie do końca o to mi chodzi. Mam cały długi kod, w którym korzystam dalej z tego "string nazwa (krok)".

Teraz ten kod działa tak, że po skompilowaniu tworzy jeden plik w którym znajdują się dane związane z genami populacji, przy czym pętla powoduje, że w jednym pliku jest kilka różnych grup.

Mi natomiast chodzi o to , aby wraz z każdą iteracją pętli powstawał kolejny plik. Jeżeli zadam 20 iteracji to ma powstać 20 plików. Rozumiecie ?

Próbuję właśnie coś z funkcją sprintf()... coś mi nie idzie ^^


Ps: Dzięki za Waszą cierpliwość :)

P-116802
michal11
» 2014-09-09 16:48:26
No ja właśnie nie do końca rozumiem, chodzi ci o to, że później jeszcze będziesz korzystał z nazw tych plików ?
P-116807
Anim
Temat założony przez niniejszego użytkownika
» 2014-09-10 10:03:53
Chodzi o wielokrotne tworzeni pliku z pętlą ;p nie wiem jak to wyjaśnić inaczej :) Złożyłem taki kod


C/C++
void zapiszKrok( int krok, const GAPopulation & pop )
{
    int i;
    char buffer[ 100 ];
    int tekst;
    string nazwa( "krok" );
    tekst = sprintf( buffer, "Kolejka_%d.txt", ngen );
    for( i = 0; i <= ngen; i++ )
    {
        ofstream file;
        file.open( tekst );
        for( i = 0; i <= pop.size() - 1; i++ )
        {
            GAGenome & g = pop.individual( i );
            GABin2DecGenome & genome =( GABin2DecGenome & ) g;
            float v = genome.phenotype( 0 );
            cout << i << "    " << v << "    " << f( v ) << endl;
            file << v << " " << f( v ) << endl;
        }
        file.close();
    }
}

Tylko teraz wyskakuje mi błąd "invalid conversion from int to char...", i kompilator zgłasza to w momencie rozpoczęcia drugiej pętli. Nie wiem jak rozwiązać ten błąd. Mogę liczyć na jakąś wskazówkę ? ^^
P-116830
« 1 » 2
  Strona 1 z 2 Następna strona