Zapis do pliku - co powoduje zmiany w zapisie?

Zapis do pliku - co powoduje zmiany w zapisie?
RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Cześć,

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

Kopiuj
#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:

Kopiuj
 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?

pasasap
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.