C++ Основен вход/изход: пример Cout, Cin, Cerr

В какво се намират потоци C++?

C++ предоставя на потребителите редица библиотеки, които могат да използват за изпълнение на входно/изходни задачи. Тези задачи се изпълняват под формата на поредици от байтове, популярно наричани потоци.

Потоците са разделени на две:

Видове потоци

  • Входящ поток: Това е вид поток, при който байтовете текат от устройство като клавиатура към основната памет.
  • Изходен поток: Това е вид поток, при който байтовете текат в обратна посока, т.е. от основната памет след това към устройството, като например екрана на дисплея.

Как работят потоците?

C++ потоците работят по следния начин:

  1. Първо, потокът се инициализира с правилния тип.
  2. След това трябва да посочите къде I / O ще се случи с помощта на указатели get/put.
  3. След като стигнете до правилното място в поток, можете да изпълнявате входни и изходни задачи, като използвате съответно оператори >> и <<.

Функционална таблица

Следните функции са предоставени в заглавния файл stream.h:

клас Функции
Filebuf Той настройва файловите буфери за четене/запис. В него има функции close() и open().
fstreambase Това е базовият клас за класовете ifstream, fstream и ofstream. Неговите операции са общи за файловите потоци.
ifstream Това е клас на входен файлов поток за предоставяне на входни операции.
ofstream Това е клас поток от изходни файлове за предоставяне на изходни операции.
fstream Това е клас на входно/изходен поток. Поддържа едновременни операции за вход/изход.

C++ Заглавни файлове за вход/изход

C++ предоставя три библиотеки, които идват с функции за изпълнение на основни входно/изходни задачи. Те включват:

  • Iostream: Това е акроним за стандартен входно/изходен поток. Този заглавен файл идва с дефиниции за обекти като cin/ cout/cerr.
  • Йоманип: Това е акроним за входно/изходни манипулатори. Библиотеката идва с функции, които могат да се използват за манипулиране на потоци. Той съдържа дефиниции за обекти като setw, setprecision и други.
  • Fstream: Това е заглавен файл за описание на файловия поток. Той обработва данни, които се четат от файл като вход или които се записват във файл, изход.

Ключовите думи cin и cout са много популярни в C++. Те се използват съответно за приемане на входове и отпечатване на изходи. За да ги използвате, трябва да включите заглавния файл на iostream във вашата програма. Причината е, че те са дефинирани в този заглавен файл. Ако не включите заглавния файл на iostream, ще се генерира грешка. Това е резултат от повреда на C++ компилатор, за да разбере значението на ключовите думи.

Основните обекти, дефинирани в заглавния файл на iostream, са cin, cout, cerr и clog. Нека ги обсъдим.

std::out

Обектът cout е екземпляр на класа iostream. Използва се за създаване на изход на стандартно изходно устройство, което обикновено е екранът. Използва се заедно с оператора за вмъкване на поток (<<).

Пример

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

Изход:

std::out

Ето екранна снимка на кода:

std::out

Обяснение на кода:

  1. Включете заглавния файл на iostream, където е дефиниран обектът cout.
  2. Включете пространството от имена std, така че да не се налага да го извикваме, когато използваме неговите класове.
  3. Извикайте функцията main(). Програмният код трябва да бъде добавен в тялото му. Отварящата фигурна скоба { маркира началото на тялото му.
  4. Създайте символна променлива с име Welcome, за да задържите низа Welcome to Guru99.
  5. Отпечатайте стойността на низа за добре дошли на конзолата. Краят е a C++ ключова дума означава краен ред. Той премества курсора, за да започне отпечатването на текст на следващия ред.
  6. Програмата трябва да върне стойност при успешно изпълнение.
  7. Край на тялото на функцията main().

std::cin

Обектът cin е екземпляр на класа istream. Той чете вход от входното устройство, клавиатурата. Обикновено се използва заедно с оператора за извличане (>>). Обектът за извличане е отговорен за извличане на данни, въведени чрез клавиатурата, от обекта cin.

Пример

Следващият пример демонстрира как да използвате ключовата дума cin в C++:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

Изход:

std::cin

Ето екранна снимка на кода:

std::cin

Обяснение на кода:

  1. Включете заглавния файл на iostream в нашата програма. Обектът cin е дефиниран в този заглавен файл.
  2. Включете пространството от имена std, за да използвате неговите класове. Няма да се налага да извиквате std, когато използвате неговите класове.
  3. Извикайте функцията main(). Програмният код трябва да бъде добавен в тялото му.
  4. Началото на тялото на програмата.
  5. Декларирайте ан цяло число променлива наименуван номер.
  6. Отпечатайте съобщение на екрана, подканващо потребителя да въведе номер.
  7. Прочетете въведената от потребителя стойност на конзолата от клавиатурата.
  8. Отпечатайте прочетената по-горе стойност на конзолата заедно с друг текст.
  9. Програмата трябва да върне стойност, ако се изпълни успешно.
  10. Край на тялото на основната функция.

std::cerr

Обектът cerr формира стандартния поток от грешки за извеждане на грешки C++. Cerr е екземпляр на класа ostream. Обектът cerr не е буфериран. Това означава, че се използва, когато съобщение за грешка трябва да се покаже незабавно.

Тъй като не е буфериран, той не съхранява съобщение за грешка за по-късен дисплей. Използва се заедно с оператора за вмъкване на поток (<<).

Пример

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

Изход:

std::cerr

Ето екранна снимка на кода:

std::cerr

Обяснение на кода:

  1. Включете заглавния файл на iostream, където е дефиниран обектът cerr.
  2. Включете пространството от имена std, така че да не се налага да го извикваме, когато използваме неговите класове.
  3. Извикайте функцията main(). Логиката на програмата трябва да бъде добавена в нейното тяло. Отварящата фигурна скоба маркира началото на тялото на функцията.
  4. Използвайте обекта cerr, за да отпечатате грешка на конзолата.
  5. Програмата трябва да върне стойност при успешно изпълнение.
  6. Край на тялото на основната функция.

std::запушване

Обектът clog е екземпляр на класа ostream. Използва се за показване на грешки на стандартния дисплей, монитора. Подобен е на обекта cerr, но е буфериран. Тъй като е буфериран, той съхранява съобщението за грешка в буфера, докато буферът се запълни/изчисти. Използва се заедно с оператора за вмъкване на поток (<<).

Пример

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

Изход:

std::запушване

Ето екранна снимка на кода:

std::запушване

Обяснение на кода:

  1. Включително заглавния файл на iostream, в който е дефиниран обектът за запушване.
  2. Включително пространството от имена на std, така че да можем да използваме неговите класове, без да го извикваме.
  3. Извикване на функцията main(). Логиката на програмата трябва да бъде добавена в нейното тяло. { маркира началото на тялото на функцията.
  4. Използвайте обекта clog, за да отпечатате грешка на стандартния изход, монитора.
  5. Програмата трябва да върне стойност при успешно завършване.
  6. Краят на тялото на функцията main().

Обработка на грешки с IO потоци

За да проверите дали даден поток е валиден или не, можете да го използвате като булево.

Ето един пример:

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

За да получите повече подробности за състоянието на потока, можете да използвате тези функции:

  • good() - ще върне true, ако всичко е наред.
  • bad() - ще върне true, ако възникне фатална грешка.
  • fail() - ще върне true след неуспешна операция на потока.
  • eof()- ще върне true, ако достигне края на файл.

За да разберете дали дадена операция за четене/запис е неуспешна, тествайте резултата от четене.

Например, за да проверите дали потребителят е въвел валидно цяло число, направете следното:

int p;
if ( cin >> p ) 
{
        cout << "Enter valid number" << endl;
}

Oбобщение

  • Входните и изходните задачи In C++ се извършват чрез байтова последователност. Байтовете се наричат ​​потоци.
  • При входен поток байтовете преминават от входното устройство като клавиатура към основната памет.
  • В изходен поток байтовете от основната памет след това към изходно устройство като монитор.
  • Обектът cin е екземпляр на класа istream. Той чете вход от входно устройство като клавиатурата.
  • Обектът cout е екземпляр на класа ostream. Той произвежда изход на изходни устройства като монитора.
  • Обектът cerr е екземпляр на класа ostream. Той показва обекти за грешка на монитора.
  • Обектът clog е екземпляр на класа ostream. Той показва съобщения за грешка на изходните устройства.
  • Обектът clog буферира съобщенията за грешка, докато обектът cerr не го прави.