logo

Основен вход и изход на C++ (I/O)

C++ I/O операцията използва концепцията за поток. Поредицата от байтове или поток от данни се нарича поток. Ускорява производителността.

Ако байтовете се прехвърлят от основната памет към устройство като принтер, дисплей, мрежова връзка и т.н., това се нарича изходна операция.

Операция за въвеждане възниква, когато байтове текат от устройство като принтер, дисплей или мрежова връзка към основната памет.

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

Заглавен файл Функция и описание
Използва се за определяне на cout, cin и cerr обекти, които съответстват съответно на стандартен изходен поток, стандартен входен поток и стандартен поток от грешки.
Използва се за деклариране на услуги, полезни за извършване на форматиран I/O, като напр setprecision и setw.
Използва се за деклариране на услуги за контролирана от потребителя обработка на файлове.

iostream: Това е един от най-важните заглавни файлове за входно/изходни операции в C++. Това означава 'вход изход' поток. За работа с различни форми на входно/изходни потоци, the iostream заглавният файл включва класовете istream (входящ поток) и ostream (изходен поток) както и неговите производни класове ifstream, ofstream , и низов поток . Най-често използваните класове на този заглавен файл са cin (стандартен вход) и cout (стандартен изход) , които ви позволяват да четете въведеното от потребителя и да показвате изход към конзолата. Например:

 #include using namespace std; int main() { int num; cout <> num; cout << 'You entered: ' << num << endl; return 0; } 

Изход

 Enter a number: 42 You entered: 42 

йоманип: Този заглавен файл означава 'входно-изходна манипулация' . Предоставя инструменти за форматиране вход и изход . Тя ви позволява да променяте подравняване, ширина, прецизност и други функции за форматиране на входа и изхода. Setw, setprecision, фиксирано, ляво, дясно , и други редовно използвани функции са изброени по-долу. Това е особено удобно за представяне на данни по определен начин.

Пример:

 #include #include using namespace std; int main() { double pi = 3.14159; cout << fixed << setprecision(2) << 'Value of pi: ' << pi << endl; return 0; } 

Изход

булево в c
 Value of pi: 3.14 

поток: Извиква се заглавният файл за операции за въвеждане/извеждане на файлове fstream . Съдържа класове за четене от и писане на файлове ifstream (поток на входен файл) и ofstream (поток на изходен файл) . Системата използва тези класове за отваряне на файлове само за четене и само за запис.

Пример:

 #include #include using namespace std; int main() { ofstream outputFile('output.txt'); if (outputFile.is_open()) { outputFile << 'Hello, File I/O!'; outputFile.close(); cout << 'File is written successfully.' << endl; } else { cout << 'Failed to open the file.' << endl; } return 0; } 

Изход

 The file was written successfully. 

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

В C++ ние често използваме 'using namespace std;' след заглавните файлове. The пространство от имена std; операторът често се използва в C++ за рационализиране на кода при работа със стандартни библиотечни компоненти. Нека разгледаме по-подробно функцията и приложението на този израз:

А пространство от имена е техника за групиране на подобни идентификатори (като напр класове, функции , и променливи ), за да предотвратите конфликти при именуване. Стандартната библиотека на C++ предоставя своите части (като cin, cout и т.н.) под пространството от имена std.

Терминът 'стандартен' се съкращава до 'std' и всички елементи на стандартната библиотека се съдържат в него. По този начин се намаляват конфликтите на имена с идентификатори, зададени във вашия код.

Сега нека поговорим защо използваното пространство от имена std; използва се израз:

Без използване на пространство от имена std:

 #include int main() { std::cout << 'Hello, world!' << std::endl; return 0; } With using namespace std: #include using namespace std; int main() { cout << 'Hello, world!' << endl; return 0; } 

Както можете да видите, с помощта на пространство от имена std; операторът ви позволява да пропуснете std:: префикс при достъп до компонентите на стандартната библиотека. Това прави вашия код по-кратък и по-четлив, тъй като не е нужно да повтаряте std:: преди всеки идентификатор на стандартна библиотека.

Заглавни файлове на I/O библиотека

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

Обектът cout е предварително дефиниран обект от клас ostream. Той е свързан към стандартното изходно устройство, което обикновено е дисплей. Cout се използва в комбинация с оператора за вмъкване на поток (<<) to show the output on a console< p>

Нека видим простия пример за стандартен изходен поток (cout):

 #include using namespace std; int main( ) { char ary[] = &apos;Welcome to C++ tutorial&apos;; cout &lt;&lt; &apos;Value of ary is: &apos; &lt;&lt; ary &lt;&lt; endl; } 

Изход

 Value of ary is: Welcome to C++ tutorial 

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

The храня се е предварително дефиниран обект на поток клас. Той е свързан със стандартното входно устройство, което обикновено е клавиатура. Cin се използва заедно с оператора за извличане на поток (>>) за четене на входа от конзола.

Нека видим простия пример за стандартен входен поток (cin):

 #include using namespace std; int main( ) { int age; cout &lt;&gt; age; cout &lt;&lt; &apos;Your age is: &apos; &lt;&lt; age &lt;&lt; endl; } 

Изход

 Enter your age: 22 Your age is: 22 

Стандартна крайна линия (endl)

The endl е предварително дефиниран обект на наш враг клас. Използва се за вмъкване на знаци в нов ред и изчистване на потока.

Нека видим простия пример за стандартен краен ред (endl):

 #include using namespace std; int main( ) { cout &lt;&lt; &apos;C++ Tutorial&apos;; cout &lt;&lt; &apos; Javatpoint&apos;&lt;<endl; cout << 'end of line'<<endl; } < pre> <p> <strong>Output</strong> </p> <pre> C++ Tutorial Javatpoint End of line </pre> <h3>Un-buffered standard error stream (cerr):</h3> <p> <strong> <em>cerr</em> </strong> stands for <strong> <em>&apos;standard error&apos;</em> .</strong> </p> <p>It is an unbuffered stream, meaning that output sent to <strong> <em>cerr</em> </strong> is immediately displayed on the console without buffering.</p> <p>It is typically used for displaying error messages and diagnostic information, which need to be displayed immediately to avoid delays caused by buffering.</p> <p> <strong>Example: using cerr:</strong> </p> <pre> #include int main() { std::cerr &lt;&lt; &apos;This is an error message.&apos; &lt;&lt; std::endl; return 0; } </pre> <p> <strong>Output</strong> </p> <pre> This is an error message. </pre> <h3>buffered standard error stream (clog):</h3> <p>clog stands for <strong> <em>&apos;standard log&apos;</em> </strong> . It is a buffered stream, similar to cout. It&apos;s often used for writing informational or diagnostic messages that are less time-sensitive than errors. The use of buffering can improve performance when displaying a large number of messages.</p> <p> <strong>Example: using clog</strong> </p> <pre> #include int main() { std::clog &lt;&lt; &apos;This is an informational message.&apos; &lt;&lt; std::endl; return 0; } </pre> <p> <strong>Output</strong> </p> <pre> This is an informational message. </pre> <p>In both examples, the output will appear on the console. However, the main difference between <strong> <em>cerr</em> </strong> and <strong> <em>clog</em> </strong> lies in their buffering behavior. Due to its unbuffered nature, messages given to <strong> <em>cerr</em> </strong> are displayed right away, but messages sent to clog may be buffered for greater speed. However, they will still eventually appear on the console.</p> <h4>Note: It is important to remember that the type of message you wish to display will determine whether you use cerr or clog. Use cerr for essential messages that need immediate attention (like error messages) and use clog for less critical diagnostic or informational messages that can be buffered for better performance.</h4> <hr></endl;>

Небуфериран стандартен поток от грешки (cerr):

cerr означава 'стандартна грешка' .

Това е небуфериран поток, което означава, че изходът е изпратен до cerr веднага се показва на конзолата без буфериране.

Обикновено се използва за показване на съобщения за грешки и диагностична информация, които трябва да бъдат показани незабавно, за да се избегнат забавяния, причинени от буфериране.

Пример: използване на cerr:

 #include int main() { std::cerr &lt;&lt; &apos;This is an error message.&apos; &lt;&lt; std::endl; return 0; } 

Изход

 This is an error message. 

буфериран стандартен поток от грешки (запушване):

запушвам означава 'стандартен дневник' . Това е буфериран поток, подобен на cout. Често се използва за писане на информационни или диагностични съобщения, които са по-малко чувствителни към времето от грешките. Използването на буфериране може да подобри производителността при показване на голям брой съобщения.

Пример: използване на запушване

 #include int main() { std::clog &lt;&lt; &apos;This is an informational message.&apos; &lt;&lt; std::endl; return 0; } 

Изход

 This is an informational message. 

И в двата примера изходът ще се появи на конзолата. Въпреки това, основната разлика между cerr и задръствам се крие в тяхното поведение на буфериране. Поради своята небуферирана природа, съобщенията, дадени на cerr се показват веднага, но съобщенията, изпратени до запушване, може да бъдат буферирани за по-голяма скорост. Те обаче в крайна сметка ще се появят на конзолата.

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