Съдържание

 

  1. Стандартен изход (cout)
  2. Стандартен вход (cin)
  3. Четене на стрингове – getline

 

Увод

Стандартната C++ библиотека включва header файла iostream, където са декларирани стандартните входни и изходни стриймови обекти. Чрез тях можем да осъществим бърза и лесна комуникация с потребителя на нашата програма под формата съобщения, изведени на екрана, както и приемане на въведеното от клавиатурата.

Стандартен изход (cout)

По подразбиране стандартният изход на C++ програма е конзолата на екрана. Стрийм обекта, дефиниран да достъпва този изход е cout.

cout се използва заедно с оператора за въвеждане: <<

  1. cout << „Hello cout!“; // отпечатва Hello cout! на екрана

Операторът << въвежда информацията поставена след него в предхождащия го стрийм (cout). В примера по-горе операторът въвежда константния низ (Справка C++ Низове) „Hello cout!“ в стандартния изходен стрийм.

Стандартният изходен стрийм работи и за други стойности освен константни низове, например:

  1. cout << 5; // отпечатва целочисленото число 5 на екрана
  2. cout << 3.14; // отпечатва числото с плаваща запетая 3.14 на екрана
  3. cout << ‘x’; // отпечатва символа x на екрана
  4. cout << x; // отпечатва съдържанието на променливата x на екрана

Въвеждащият оператор (<<) също така може да се използва последователно няколко пъти. Това може да бъде от полза, когато искаме да отпечатаме комбинация от променливи и константи или повече от една променлива:

  1. int x = 10;
  2. cout << „The value of „ << ‘x’ << “ is: „ << x;

 

The value of x is: 10

Важно е да се отбележи, че cout не поставя автоматично нов ред в края на реда, освен ако ние изрично не му кажем. Следният израз ще отпечата всичко на един ред:

  1. cout << „First line.“;
  2. cout << „Second line.“;

 

First line.Second line.

Има два начина за поставяне на нов ред. Първият вариант е да използваме endl манипулатора:

  1. cout << „First line.“ << endl;
  2. cout << „Second line.“ << endl;

 

First line.
Second line.

Вторият вариант е да използваме специалния знак за нов ред в cout, който е ‘\n’:

  1. cout << „First line.\n“;
  2. cout << „Second line.“;

 

First line.
Second line.

 

Стандартен вход (cin)

Стандартното устройство за въвеждане е клавиатурата. Обработката на стандартния вход в C++, се осъществява с прилагането на извеждащия оператор (>>) на cin стрийма. Операторът трябва да бъде последван от променлива, в която да бъде съхранена информацията, изведена от стрийма. Пример:

  1. char ch;
  2. cin >> ch;

На първия ред декларираме променлива от тип Char (символ) с име ch. Вторият ред изчаква за входяща информация от cin (клавиатурата), за да я съхрани в променливата ch.

Важно е да се знае, че cin не може да обработва входа от клавиатурата, докато не бъде натиснат Enter. Следователно дори ако изисквате само един символ от потребителя, cin няма да обработи входа, докато потребителят не натисне Enter, след като символа е въведен. Разбира се това може да бъде имплементирано, но трябва да включите библиотеката conio.h (тъй като не е налична за всички компилатори, няма да се спираме подробно) и да използвате функциите getche() или getch().

cin работи с всички типове данни:

  1. char mychar;
  2. int myint;
  3. double mydouble;
  4. float myfloat;
  5. string mystring;
  6. cin >> mychar;
  7. cin >> myint;
  8. cin >> mydouble;
  9. cin >> myfloat;
  10. cin >> mystring;

Винаги имайте едно на ум, че потребителят на програмата може да бъде един от факторите, които причиняват грешките, дори и в най-опростените програми. Ако програмата например изисква въвеждане на цяло число, а потребителят си въведе името, програмата няма да работи правилно, тъй като потребителят не е въвел това, което се очаква от него. Затова когато използвате cin за въвеждане на данни в програма, ще трябва да се доверявате на потребителя.

Забележете в последния пример колко пъти сме извикали последователно cin. Когато искате от потребителя да въведе повече от едно нещо, използвайте следната структура (eквивалентно е на горния пример):

  1. cin >> mychar >> myint >> mydouble >> myfloat >> mystring;

 

Четене на стрингове – getline

Тъй като съществува малък проблем при стандартното четене на стринг със cin, ще разгледаме и алтернативното четене на стрингове с getline.

  1. cin >> mystring;

Проблемът тук е, че cin спира да чете в момента, в който се натъкне на празно пространство. Тоест в този случай ще можем да прочетем само първата дума от това, което е въвел потребителят.

Решението е функцията getline. Използва се по следния начин:

  1. string mystring;
  2. getline (cin, mystring);

Автор: Мартин Михайлов