Zapisanie wyników do pliku przez fstream

0

Witam. Posiadam taki problem z moim programem, że zamiast zapisać mi wyników do plików tworzonych wcześniej zapisuje mi je do konsoli a pliki pozostają puste bez żadnych danych. Proszę o pomoc. Pozdrawiam.

Kod programu:
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;
bool permutacja( string a )
{
int n = a.length();
int i, j; // indeksy znakow ktore bede zamieniac ze soba miejscami
while( true ) {
cout << a << endl;
i = n - 1; // Od końca słowa idąc w lewo:
// znajduje taki znak ze poprzednik jest od niego mniejszy:
while( i > 0 && a[ i - 1 ] >= a[ i ] ) i--; // dopóki poprzedni znak jest wiekszy/rowny biezacemu to idź w lewo

    if( i == 0 ) break; // jeżeli nie na już znaków które można przestawić, to koniec
   
    // będę przestawiać POPRZEDNIKA największego znaku: a[i-1]
    // zamienię go z NAJMNIEJSZYM znakiem większym od niego,
    // który stoi z jego prawej strony
    j = i;
    while( j < n && a[ j ] > a[ i - 1 ] ) j++; // szukam NAJMNIEJSZEGO znaku WIEKSZEGO od a[i-1]
   
    j--;
    swap( a[ i - 1 ], a[ j ] ); // zamieniam znaki miejscami
    reverse( a.begin() + i, a.end() ); // przywracam porządek na prawo od i
}

}

int main()
{
while( true )
{
int i, j;
cout << "Podaj nazwe pliku wraz z rozszerzeniem : ";
string name;
getline( cin, name ); // wczytaj nazwe
if( !name.length() ) break; // koniec jeżeli pusty plik

    ifstream fin( name.c_str() ); // otwieramy plik
    if( fin ) // jeżeli się udało otworzyć
    {
        string line;
        while( getline( fin, line ) ) // wczytaj wiersz
        {
            string outname( line + ".txt" ); // złóź nazwę
            ofstream fout( outname.c_str() ); // stwórz plik
            if( fout ) // jeżeli udało się stworzyć plik
            {
                cout << "" << endl;
                cout << "\tUtworzono plik o nazwie \"" + outname + "\"" << endl;
                cout << "" << endl;
                string perm( line );
                sort( perm.begin(), perm.end() ); // posortuj litery
                cout << "" << endl;
                cout << "Jesli chcesz zakonczyc wcisnij ENTER";
                cout << "" << endl;
                while( true )
                {
                    if( perm != line ) fout << perm << endl; // jeżeli to nie nazwa pliku
                   
                    if( permutacja( perm ) )
                         fstream( outname.c_str(), ios::out | ios::app );
                   
                    break; // jeżeli brak nastepnej permutacji to koniec
                }
            }
            else cout << "Plik \"" + outname + "\" nie daje sie stworzyć" << endl << endl; // jeżeli NIE udało się stworzyć plik
           
        }
        cout << endl;
    }
    else cout << "Nie mozna otworzyc pliku \"" + name + "\"" << endl << endl; // jeżeli NIE udało się otworzyć
   
}

}

1
  1. zapoznaj się z funkcją next_permutaton()
  2. co wg ciebie robi kod: if(permutacja(perm)) fstream(outname.c_str(),ios::out|ios::app); ?

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