Какво представляват потоците в C ++?
C ++ предоставя на потребителите редица библиотеки, които те могат да използват за изпълнение на задачи за въвеждане / извеждане. Тези задачи се извършват под формата на байтови последователности, популярно наричани потоци.
Потоците са разделени на две:
Видове потоци
- Входящ поток: Това е вид поток, при който байтовете преминават от устройство като клавиатура към основната памет.
- Изходен поток: Това е тип поток, при който байтовете текат в обратна посока, т.е.
В този урок за C ++ ще научите:
- Какво представляват потоците в C ++?
- Как работят потоците?
- Таблица на функциите
- C ++ заглавни файлове за вход / изход
- std :: cout
- std :: cin
- std :: cerr
- std :: clog
- Обработка на грешки с IO потоци:
Как работят потоците?
C ++ потоците работят както следва:
- Първо, потокът се инициализира с правилния тип.
- След това трябва да посочите къде ще се случи I / O, като използвате указатели get / put.
- След като стигнете до правилното местоположение в поток, можете да изпълнявате задачи за въвеждане и извеждане, използвайки съответно оператори >> и <<.
Таблица на функциите
По-долу са функциите, предоставени в заглавния файл stream.h:
Клас | Функции |
Filebuf | Той задава файлови буфери за четене / запис. Той има функции close () и open () в себе си |
fstreambase | Това е основният клас за класовете ifstream, fstream и ofstream. Неговите операции са общи за файловите потоци. |
ifstream | Това е клас поток на входен файл за предоставяне на операции по въвеждане. |
от течението | Това е клас на изходен файлов файл за предоставяне на изходни операции. |
fstream | Това е клас на входно / изходен поток. Той поддържа едновременни операции по въвеждане / извеждане. |
C ++ заглавни файлове за вход / изход
C ++ предоставя три библиотеки, които идват с функции за изпълнение на основни задачи за въвеждане / извеждане. Те включват:
- Iostream: Това е акроним за стандартен входно / изходен поток. Този заглавен файл идва с дефиниции за обекти като cin / cout / cerr.
- Iomanip: Това е акроним за входно / изходни манипулатори. Библиотеката се предлага с функции, които могат да се използват за манипулиране на потоци. Той съдържа дефиниции за обекти като setw, setprecision и други.
- Fstream: Това е заглавен файл за описание на файловия поток. Той обработва данни, които се четат от файл като вход или които се записват във файл, изход.
Ключовите думи cin и cout са много популярни в C ++. Те се използват съответно за вземане на входове и изходи за печат. За да ги използвате, трябва да включите заглавния файл на iostream във вашата програма. Причината е, че те са дефинирани в този заглавен файл. Ако не включите заглавния файл на iostream, ще се генерира грешка. Това е резултат от провала на компилатора на C ++ да разбере значението на ключовите думи.
Основните обекти, дефинирани в заглавния файл на iostream, са cin, cout, cerr и clog. Нека ги обсъдим.
std :: cout
Обектът cout е екземпляр на класа iostream. Използва се за извеждане на изход на стандартно изходно устройство, което обикновено е екранът. Използва се заедно с оператора за вмъкване на поток (<<).
Пример:
#includeusing namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream, където е дефиниран обектът cout.
- Включете std пространството от имена, за да не се налага да го извикваме, когато използваме класовете му.
- Извикайте функцията main (). Кодът на програмата трябва да бъде добавен в нейното тяло. Отварящата се къдрава скоба {маркира началото на тялото.
- Създайте символна променлива на име welcome, за да държите низа Welcome to Guru99.
- Отпечатайте стойността на низа за добре дошли на конзолата. Endl е ключова дума C ++, която означава краен ред. Премества курсора, за да започне отпечатването на текст на следващия ред.
- Програмата трябва да върне стойност при успешно изпълнение.
- Край на тялото на функцията main ().
std :: cin
Обектът cin е екземпляр на класа istream. Той чете въвеждане от въвеждащото устройство, клавиатурата. Обикновено се използва заедно с екстракторния оператор (>>). Обектът за извличане е отговорен за извличане на данни, въведени чрез клавиатурата от cin обекта.
Пример:
Следващият пример демонстрира как да използваме ключовата дума cin в C ++:
#includeusing 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 е буфериран. Това означава, че се използва, когато съобщението за грешка трябва да се покаже незабавно.
Тъй като не е буфериран, той не съхранява съобщение за грешка за по-късно показване. Използва се заедно с оператора за вмъкване на поток (<<).
Пример:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream, където е дефиниран обектът cerr.
- Включете std пространството от имена, за да не се налага да го извикваме, когато използваме класовете му.
- Извикайте функцията main (). Логиката на програмата трябва да бъде добавена в нейното тяло. Отварящата се къдрава скоба бележи началото на тялото на функцията.
- Използвайте обекта cerr, за да отпечатате грешка на конзолата.
- Програмата трябва да върне стойност при успешно изпълнение.
- Край на тялото на основната функция.
std :: clog
Обектът clog е екземпляр на класа ostream. Използва се за показване на грешки на стандартния дисплей, монитора. Подобен е на обекта cerr, но е буфериран. Тъй като е буфериран, той съхранява съобщението за грешка в буфера, докато буферът се запълни / измие. Използва се заедно с оператора за вмъкване на поток (<<).
Пример:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включително заглавния файл на iostream, в който е дефиниран обектът clog.
- Включително std пространство от имена, за да можем да използваме класовете му, без да го извикваме.
- Извикване на функцията main (). Логиката на програмата трябва да бъде добавена в нейното тяло. {Отбелязва началото на тялото на функцията.
- Използвайте обекта за запушване, за да отпечатате грешка на стандартния изход, монитора.
- Програмата трябва да върне стойност при успешно завършване.
- Краят на тялото на функцията 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;}
Обобщение
- Задачите за въвеждане и извеждане в C ++ се извършват чрез байтова последователност. Байтовете се наричат потоци.
- Във входния поток байтовете преминават от входното устройство като клавиатура към основната памет.
- В изходен поток байтовете от основната памет след това към изходно устройство като монитор.
- Обектът cin е екземпляр на класа istream. Чете въвеждане от входно устройство като клавиатурата.
- Обектът cout е екземпляр на класа ostream. Той произвежда изход на изходни устройства като монитора.
- Обектът cerr е екземпляр на клас ostream. Той показва обекти с грешки на монитора.
- Обектът clog е екземпляр на класа ostream. Той показва съобщения за грешки на изходните устройства.
- Обектът clog буферира съобщения за грешка, докато cerr обектът не.