5. Instrukcje czytaj i pisz

W języku C++, operacje wejścia/wyjścia (I/O) są kluczowym elementem programowania, pozwalającym na interakcję z użytkownikiem i systemem plików. Do obsługi operacji wejścia/wyjścia wykorzystywana jest biblioteka <iostream>. Do operacji wypisywania na ekranie oraz odczytywania danych od użytkownika wykorzystujemy strumienie 'cout' (wyjścia) oraz 'cin' (wejścia). 

Przy pomocy strumienia 'cout' możemy wyświetlić na ekranie komunikat lub wartość zmiennej.

cout << "Przykladowy napis";
cout << "Inny przyklad" << endl;

W przedstawionym przykładzie poleceniem 'cout' wypisywany jest na ekranie przykładowy napis. Jest także możliwość kontynuowania strumieniowego wyświetlania danych na ekranie przez kolejne wykorzystanie '<<'. W przykładzie pokazano także w jaki sposób wymusić przejście do nowej linii za pomocą 'endl'. Możliwe jest także przejście do nowej linii za pomocą polecenia '\n' umieszczonego bezpośrednio w tekście:

cout << "Przykladowy napis \n";
Możliwe jest także wstawienie innych znaków specjalnych np. znak tabulacji '\t'. 

Oprócz wypisywania na ekranie stałych napisów można także wyświetlać wartości zmiennych. W przypadku podania w strumieniu nazwy zmiennej, na ekranie zostanie wyświetlona jej wartość,  a nie jej nazwa. Na przykładzie poniżej przedstawiono sposób wyświetlania wartości zmiennych na ekranie.
int x,y;
x = 1;
y = 4;
cout << "Wartosc x: " << x << endl;

cout << "Wartosc y: ";
cout << y << endl;

cout << "Wartosc sumy x+y: "; << x + y << endl;
Możliwe jest wyświetlanie wartości zmiennych lub wyników działań na zmiennych. Oprócz wyświetlania na ekranie informacji oraz wyników działania aplikacji bardzo często istnieje także konieczność pobierania danych od użytkowników. Do tego celu możemy wykorzystać polecenie 'cin'. Instrukcję możemy wykorzystać do wczytania wartości jednej lub wielu zmiennych dowolnego typu z poziomu klawiatury lub pliku. Przykład poniżej demonstruje odczyt przykładowych danych różnych typów z klawiatury.

string napis;
cout << "Podaj przykladowy napis." << x << endl;
cin >> napis;

int x,y;
cout >> "Podaj wartosc x." << x << endl;
cin >> x >> y;
Wczytywanie danych przez użytkownika poprzedzone jest wyświetleniem prośby o wczytanie danych. W przykładowym kodzie podano także przykład wczytywania wielu zmiennych przy wykorzystaniu jednego polecenia 'cin'. W taki sposób możliwe jest wczytywanie zmiennych różnych typów.

W trakcie wczytywania danych z klawiatury oraz pliku nie jest sprawdzana poprawność wprowadzanych typów zmiennych. Programista musi o to zadbać, aby typy były zgodne lub odpowiednio obsłużyć oraz zasygnalizować błędy.
W przedstawiony sposób możliwe jest wczytywanie jedynie tekstów niezawierających spacji. Aby wczytać tekst zawierający spacje należy wykorzystać funkcję 'getline'. Dzieje się tak dlatego, że odczyt danych ze strumienia w C++ odbywa się w sposób niezachłanny - czyli zawsze czytane jest najmniej znaków jak można. A ponieważ w przypadku słów separatorem jest tzw. biały znak (czyli znak spacji, tabulacji, nowego wiersza itp.), to odczyt kończy się po napotkaniu pierwszego separatora.

Funkcja posiada dwa parametry:
  • polecenie np. cin
  • zmienna typu string.
Wywołanie funkcji przedstawione jest w przykładzie poniżej.
string dane;
cout << "Podaj imie i nazwisko i wcisnij Enter\n ";
getline (cin, dane);

cout << " Witaj, " << dane << endl; // Wydrukuje się imie i nazwisko
Funkcja jest także wykorzystywana w przypadku wczytywania danych z pliku. Takie wykorzystanie funkcji będzie zademonstrowane w kolejnych rozdziałach, które będą dotyczyć obsługi plików tekstowych.