Ucinanie spacji przy operacji na pliku

0

Witam! Przy szyfratorze plików tekstowych podczas zaszyfrowania, a potem odszyfrowania zjada mi spacje. Jak temu zaradzić? Kod:

int EncryptText()
{
    string file_text; //cały tekst pliku, na który łączą się "letter"
    char letter; //wczytywana litera
    char file_name[256]; //ścieżka/nazwa pliku

    system("CLS");
    cout << "Wpisz nazwe pliku, ktory ma byc zaszyfrowany: ";
    cin >> file_name;
    fstream file(file_name, fstream::in);
    if (!file)
    {
        cout << "Podany plik nie istnieje!";
        cin.ignore();
        cin.get();
        return 1;
    }
    while(file >> letter) //POBIERANIE LITER Z PLIKU I SZYFROWANIE
    {
        if (letter == 32) continue; //dałem takie coś (32 w ASCII = spacja), myślałem, że pomoże, ale jednak to zależy od samego pobierania znaków z pliku, a nie szyfrowania.
        letter += 97;
        file_text += letter;
    }
    file.close();
    file.clear();
    file.open(file_name, ios::out | ios::trunc);
    file << file_text;
    file.close();
    system("CLS");
    cout << "Zaszyfrowano!";
    cin.ignore();
    cin.get();
}

int DecryptText()
{
    string file_text;
    char letter;
    char file_name[256];

    system("CLS");
    cout << "Wpisz nazwe pliku, ktory ma byc odszyfrowany: ";
    cin >> file_name;
    fstream file(file_name, fstream::in);
    if (!file)
    {
        cout << "Podany plik nie istnieje!";
        cin.ignore();
        cin.get();
        return 1;
    }
    while(file >> letter) //POBIERANIE LITER Z PLIKU I DESZYFROWANIE
    {
        if (letter == 32) continue;
        letter -= 97;
        file_text += letter;
    }
    file.close();
    file.clear();
    file.open(file_name, ios::out | ios::trunc);
    file << file_text;
    file.close();
    system("CLS");
    cout << "Odszyfrowano!";
    cin.ignore();
    cin.get();
}
0
 fstream file(file_name, fstream::in);
file >> noskipws;
0

Z ostatnich obserwacji :D wynika, że to przy ODCZYCIE zjada spacje. Kod:

int ReadText()
{
    string file_text;
    string word;
    int words;
    char file_name[256];

    system("CLS");
    cout << "Wpisz nazwe pliku, ktory ma byc odczytany:" << endl << endl;
    cout << ">";
    cin >> file_name;
    fstream file(file_name, fstream::in);
    if (!file)
    {
        cout << "Podany plik nie istnieje!";
        cin.ignore();
        cin.get();
        return 1;
    }
    while (file >> word) //What's wrong here?!
    {
        file_text += word; //Maybe here?
        words++;
    }
    system("CLS");
    cout << "Tekst z pliku: `" << file_name << "` - wyrazow: " << words << endl;
    cout << "===========================" << endl;
    cout << file_text;
    cin.ignore();
    cin.get();
    file.close();
}

I chciałem dodać, że źle też liczy słowa, jest np. 6, a pokazuje 8. Być może, że to przez te spacje ;/

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