Zapis do pliku - co powoduje zmiany w zapisie?

0

Cześć,

Dlaczego przy zapisie do pliku (ostatni warunek), taka forma daje oczekiwany wynik (same duże litery łacińskiego alfabetu), a ...

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string napis1, napis2;
int i, j;
int main()
{
ifstream slowa;
slowa.open("tj.txt");
ifstream klucze;
klucze.open("klucze1.txt");
ofstream output;
output.open("wynik4a.txt");

while (slowa >> napis1 && klucze >> napis2)
{
   for (i=0, j=0; i<napis1.size(); i++, j++)
    {
         if (j==napis2.size())
        j=0;
    char pomoc = napis1[i]+napis2[j]-64;
    if (pomoc>90)
       pomoc=pomoc-26;
     output << pomoc;
    }
   output << endl;
}

slowa.close();
klucze.close();
output.close();

    return 0;

... a z lekko zmienionym ostatnim warunkiem:

 if (pomoc>90)
        output <<pomoc-26;
    else output << pomoc;

daje w wyniku oprócz liter również cyfry i inne znaki? Czy ma to związek z tym, że output << pomoc-26 zapisuje i wartość ASCII **char **pomoc i wartość **int **26?

1

pomoc jest typu char, natomiast (pomoc - 26) to pomoc poprzez tzw. awans jest rzutowana na int i jest przeprowadzana operacja odejmowania i dlatego wynikiem jest wartość typu int, która jest przekazywana do strumienia w postaci reprezentacji dziesiętnej owej wartości liczbowej.

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