C++ Основен вход/изход: пример Cout, Cin, Cerr
В какво се намират потоци C++?
C++ предоставя на потребителите редица библиотеки, които могат да използват за изпълнение на входно/изходни задачи. Тези задачи се изпълняват под формата на поредици от байтове, популярно наричани потоци.
Потоците са разделени на две:
Видове потоци
- Входящ поток: Това е вид поток, при който байтовете текат от устройство като клавиатура към основната памет.
- Изходен поток: Това е вид поток, при който байтовете текат в обратна посока, т.е. от основната памет след това към устройството, като например екрана на дисплея.
Как работят потоците?
C++ потоците работят по следния начин:
- Първо, потокът се инициализира с правилния тип.
- След това трябва да посочите къде I / O ще се случи с помощта на указатели get/put.
- След като стигнете до правилното място в поток, можете да изпълнявате входни и изходни задачи, като използвате съответно оператори >> и <<.
Функционална таблица
Следните функции са предоставени в заглавния файл 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; }
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream, където е дефиниран обектът cout.
- Включете пространството от имена std, така че да не се налага да го извикваме, когато използваме неговите класове.
- Извикайте функцията main(). Програмният код трябва да бъде добавен в тялото му. Отварящата фигурна скоба { маркира началото на тялото му.
- Създайте символна променлива с име Welcome, за да задържите низа Welcome to Guru99.
- Отпечатайте стойността на низа за добре дошли на конзолата. Краят е a C++ ключова дума означава краен ред. Той премества курсора, за да започне отпечатването на текст на следващия ред.
- Програмата трябва да върне стойност при успешно изпълнение.
- Край на тялото на функцията 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; }
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашата програма. Обектът cin е дефиниран в този заглавен файл.
- Включете пространството от имена std, за да използвате неговите класове. Няма да се налага да извиквате std, когато използвате неговите класове.
- Извикайте функцията main(). Програмният код трябва да бъде добавен в тялото му.
- Началото на тялото на програмата.
- Декларирайте ан цяло число променлива наименуван номер.
- Отпечатайте съобщение на екрана, подканващо потребителя да въведе номер.
- Прочетете въведената от потребителя стойност на конзолата от клавиатурата.
- Отпечатайте прочетената по-горе стойност на конзолата заедно с друг текст.
- Програмата трябва да върне стойност, ако се изпълни успешно.
- Край на тялото на основната функция.
std::cerr
Обектът cerr формира стандартния поток от грешки за извеждане на грешки C++. Cerr е екземпляр на класа ostream. Обектът cerr не е буфериран. Това означава, че се използва, когато съобщение за грешка трябва да се покаже незабавно.
Тъй като не е буфериран, той не съхранява съобщение за грешка за по-късен дисплей. Използва се заедно с оператора за вмъкване на поток (<<).
Пример
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream, където е дефиниран обектът cerr.
- Включете пространството от имена std, така че да не се налага да го извикваме, когато използваме неговите класове.
- Извикайте функцията main(). Логиката на програмата трябва да бъде добавена в нейното тяло. Отварящата фигурна скоба маркира началото на тялото на функцията.
- Използвайте обекта cerr, за да отпечатате грешка на конзолата.
- Програмата трябва да върне стойност при успешно изпълнение.
- Край на тялото на основната функция.
std::запушване
Обектът clog е екземпляр на класа ostream. Използва се за показване на грешки на стандартния дисплей, монитора. Подобен е на обекта cerr, но е буфериран. Тъй като е буфериран, той съхранява съобщението за грешка в буфера, докато буферът се запълни/изчисти. Използва се заедно с оператора за вмъкване на поток (<<).
Пример
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включително заглавния файл на iostream, в който е дефиниран обектът за запушване.
- Включително пространството от имена на std, така че да можем да използваме неговите класове, без да го извикваме.
- Извикване на функцията main(). Логиката на програмата трябва да бъде добавена в нейното тяло. { маркира началото на тялото на функцията.
- Използвайте обекта clog, за да отпечатате грешка на стандартния изход, монитора.
- Програмата трябва да върне стойност при успешно завършване.
- Краят на тялото на функцията 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 не го прави.