Шта су токови у Ц ++?
Ц ++ пружа корисницима низ библиотека које могу користити за извршавање задатака уноса / излаза. Ови задаци се раде у облику секвенци бајтова, популарно названих токовима.
Потоци су подељени на два дела:
Врсте потока
- Улазни ток: Ово је врста тока где бајтови прелазе са уређаја као што је тастатура у главну меморију.
- Излазни ток: Ово је врста тока где бајтови теку у супротном смеру, то јест, из главне меморије, а затим у уређај, као што је екран приказа.
У овом водичу за Ц ++ научићете:
- Шта су токови у Ц ++?
- Како токови функционишу?
- Табела функција
- Ц ++ датотеке заглавља за улаз / излаз
- стд :: цоут
- стд :: цин
- стд :: церр
- стд :: цлог
- Руковање грешкама са ИО токовима:
Како токови функционишу?
Ц ++ токови раде на следећи начин:
- Прво се ток иницијализује правим типом.
- Даље, требало би да наведете где ће се И / О појавити помоћу показивача гет / пут.
- Након доласка на право место у току, можете извршавати задатке уноса и излаза помоћу оператора >> и <<, респективно.
Табела функција
Следе функције које су дате у заглавној датотеци стреам.х:
Класа | Функције |
Филебуф | Поставља међуспремнике датотека за читање / писање. У себи има функције цлосе () и опен () |
фстреамбасе | То је основна класа за класе ифстреам, фстреам и офстреам. Његове операције су заједничке за токове датотека. |
ако ток | То је класа тока улазне датотеке за пружање операција уноса. |
офстреам | То је класа тока излазних датотека за пружање излазних операција. |
фстреам | То је класа улазно / излазног тока. Подржава истовремене улазно / излазне операције. |
Ц ++ датотеке заглавља за улаз / излаз
Ц ++ пружа три библиотеке које имају функције за обављање основних задатака уноса / излаза. То укључује:
- Иостреам: То је скраћеница за стандардни улазно / излазни ток. Ова датотека заглавља долази са дефиницијама за објекте попут цин / цоут / церр.
- Иоманип: Скраћеница за улазно / излазне манипулаторе. Библиотека долази са функцијама које се могу користити за манипулацију токовима. Садржи дефиниције за објекте као што су сетв, сетпрецисион и други.
- Фстреам: Ово је датотека заглавља за опис тока датотека. Обрађује податке који се читају из датотеке као улаз или који се записују у датотеку, као излаз.
Кључне речи цин и цоут су веома популарне у језику Ц ++. Користе се за узимање улаза, односно за штампање излаза. Да бисте их користили, у свој програм морате укључити заглавну датотеку иостреам. Разлог је тај што су дефинисани у тој датотеци заглавља. Ако не укључите датотеку заглавља иостреам, генерисаће грешку. Ово је резултат неуспеха компајлера за Ц ++ да разуме значење кључних речи.
Главни објекти дефинисани у датотеци заглавља иостреам су цин, цоут, церр и цлог. Хајде да разговарамо о њима.
стд :: цоут
Објект цоут је инстанца класе иостреам. Користи се за производњу излаза на стандардном излазном уређају, а то је обично екран. Користи се заједно са оператором за уметање тока (<<).
Пример:
#includeusing namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}
Излаз:
Ево снимка екрана кода:
Објашњење кода:
- Укључите датотеку заглавља иостреам где је дефинисан објект цоут.
- Укључите стд простор имена да га не бисмо морали позивати када користимо његове класе.
- Позовите главну () функцију. Програмски код треба додати унутар његовог тела. Отварајућа коврџава заграда {означава почетак њеног тела.
- Направите променљиву карактера под називом добродошли да бисте држали низ Добродошли у Гуру99.
- Испишите вредност добродошлице низа на конзоли. Ендл је кључна реч Ц ++ која значи крајњи ред. Помера курсор да започне штампање текста у следећем реду.
- Програм мора вратити вредност након успешног извршења.
- Крај тела функције маин ().
стд :: цин
Цин објекат је инстанца класе истреам. Чита унос са улазног уређаја, тастатуре. Обично се користи заједно са оператором екстракције (>>). Издвајање објекта је одговорно за издвајање података унетих преко тастатуре из цин предмета.
Пример:
Следећи пример показује како се користи кључна реч цин у језику Ц ++:
#includeusing namespace std;int main(){int number;cout << "Enter a number:";cin >> number;cout << "\nYou entered: " << number;return 0;}
Излаз:
Ево снимка екрана кода:
Објашњење кода:
- Укључите датотеку заглавља иостреам у наш програм. Цин објекат је дефинисан у овој датотеци заглавља.
- Укључите стд простор имена да бисте користили његове класе. Нећете морати да зовете стд када користите његове класе.
- Позовите главну () функцију. Програмски код треба додати унутар његовог тела.
- Почетак дела програма.
- Декларишите целобројну променљиву која се зове број.
- Одштампајте поруку на екрану која од корисника тражи да унесе број.
- Очитајте вредност коју је корисник унео на конзолу са тастатуре.
- Одштампајте горе прочитану вредност на конзоли уз други текст.
- Програм би требало да врати вредност ако се успешно изврши.
- Крај тела главне функције.
стд :: церр
Објект церр формира стандардни ток грешака за изношење грешака у Ц ++. Церр је инстанца остреам класе. Церр објекат је без бафера. То значи да се користи када се одмах прикаже порука о грешци.
Будући да је небуферисан, не чува поруку о грешци за каснији приказ. Користи се заједно са оператором за уметање тока (<<).
Пример:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Излаз:
Ево снимка екрана кода:
Објашњење кода:
- Укључите иостреам датотеку заглавља тамо где је дефинисан церр објекат.
- Укључите стд простор имена да га не бисмо морали позивати када користимо његове класе.
- Позовите главну () функцију. Програмска логика треба да се дода унутар њеног тела. Отварање коврџаве заграде означава почетак тела функције.
- Помоћу објекта церр испишите грешку на конзоли.
- Програм мора вратити вредност након успешног извршавања.
- Крај тела главне функције.
стд :: цлог
Објекат цлог је инстанца класе остреам. Користи се за приказивање грешака на стандардном екрану, монитору. Сличан је церр објекту, али је баферисан. Будући да је баферован, он чува поруку о грешци у баферу док се ме успремник не напуни / испере. Користи се заједно са оператором за уметање тока (<<).
Пример:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Излаз:
Ево снимка екрана кода:
Објашњење кода:
- Укључујући иостреам датотеку заглавља у којој је дефинисан објект зачепљења.
- Укључујући и стд простор имена да бисмо могли да користимо његове класе без позивања.
- Позивање главне () функције. Програмска логика треба да се дода унутар њеног тела. Ознака {означава почетак тела функције.
- Користите објекат зачепљења да бисте исписали грешку на стандардном излазу, монитору.
- Програм мора вратити вредност након успешног завршетка.
- Крај тела функције маин ().
Руковање грешкама са ИО токовима:
Да бисте проверили да ли је ток важећи или не, можете га користити као логичку вредност.
Ево примера:
ifstream file( "myfile.txt" );if ( ! file ){cout << "File NOT opened!" << endl;}
Да бисте добили више детаља о статусу стрима, можете да користите ове функције:
- гоод () - вратиће се труе ако је све у реду.
- бад () - вратиће труе ако се догоди фатална грешка.
- фаил () - вратиће труе након неуспешне операције стрима.
- еоф () - вратиће труе ако дође до краја датотеке.
Тестирајте резултат читања да бисте знали да ли одређена операција читања / писања није успела.
На пример, да бисте проверили да ли је корисник унео важећи цели број, урадите следеће:
int p;if ( cin >> p ){cout << "Enter valid number" << endl;}
Резиме
- Улазни и излазни задаци у језику Ц ++ обављају се низом бајтова. Бајтови се називају токови.
- У улазном току, бајтови прелазе са улазног уређаја попут тастатуре у главну меморију.
- У излазном току, бајтови из главне меморије затим на излазни уређај попут монитора.
- Цин објекат је инстанца класе истреам. Чита унос са улазног уређаја попут тастатуре.
- Цоут објекат је инстанца класе остреам. Даје излаз на излазним уређајима попут монитора.
- Објекат церр је инстанца класе остреам. Приказује објекте грешака на монитору.
- Објект цлог је инстанца класе остреам. Приказује поруке о грешкама на излазним уређајима.
- Објект цлог баферује поруке о грешкама, док церр објект не.