logo

C++ Basic Input and Output (I/O)

C++ I/O-operation använder strömkonceptet. Serien av bytes eller dataflödet kallas en ström. Det accelererar prestandan.

Om bytes överförs från huvudminnet till en enhet som en skrivare, bildskärm, nätverksanslutning, etc. kallas detta en utmatningsoperation.

En inmatningsoperation inträffar när byte flödar från en enhet som en skrivare, bildskärm eller nätverksanslutning till huvudminnet.

I C++, fördefinierade funktioner och deklarationer tillhandahålls genom rubrikfiler, så att du kan utföra specifika uppgifter utan att behöva skriva ny kod från början. Några viktiga huvudfiler för in-/utdataoperationer i C++ inkluderar funktioner för att effektivt utföra in- och utdatauppgifter. C++ Standard Library, en samling klasser och metoder skapade i programmeringsspråket C++, innehåller dessa rubrikfiler. Låt oss diskutera huvudhuvudfilerna för in-/utdataoperationer:

Rubrikfil Funktion och beskrivning
Det används för att definiera cout, cin och cerr objekt, som motsvarar standardutgångsström, standardinmatningsström respektive standardfelström.
Den används för att förklara tjänster användbara för att utföra formaterad I/O, som t.ex setprecision och setw.
Den används för att deklarera tjänster för användarkontrollerad filbehandling.

iostream: Det är en av de viktigaste rubrikfilerna för in-/utdataoperationer i C++. Det står för 'input-utgång' ström. För att arbeta med olika former av input/output-strömmar iostream header-filen innehåller klasserna istream (ingångsström) och ostream (utgångsström) såväl som dess härledda klasser ifstream, ofstream , och strängström . Den här rubrikfilens mest använda klasser är cin (standardingång) och cout (standardutgång) , som låter dig läsa användarinmatning och visa utdata till konsolen. Till exempel:

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

Produktion

 Enter a number: 42 You entered: 42 

iomanip: Denna rubrikfil står för 'input-output manipulation' . Det ger verktyg för att formatera inmatning och produktion . Det låter dig ändra uppriktning, bredd, precision , och andra formateringsfunktioner för in- och utdata. Setw, setprecision, fixed, left, right , och andra regelbundet använda funktioner listas nedan. Det är särskilt praktiskt för att presentera data på ett visst sätt.

Exempel:

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

Produktion

sql-satser
 Value of pi: 3.14 

ström: Rubrikfilen för filinmatning/utmatning anropas fstream . Den innehåller klasser för att läsa från och skriva till filer ifstream (indatafilström) och ofstream (utgångsfilström) . Systemet använder dessa klasser för att öppna skrivskyddade och skrivskyddade filer.

Exempel:

 #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; } 

Produktion

 The file was written successfully. 

Dessa rubrikfiler är bland de mest avgörande för C++ in-/utdatauppgifter. Var och en har ett specifikt syfte och erbjuder de verktyg som krävs för att framgångsrikt hantera uppgifter som involverar input och output, oavsett om det interagerar med konsol, formatering av utdata , eller arbetar med filer.

I C++ använder vi ofta 'använder namnutrymme std;' efter rubrikfilerna. De namnområde std; statement används ofta i C++ för att effektivisera koden när man arbetar med standardbibliotekskomponenter. Låt oss undersöka detta uttalandes funktion och tillämpning mer i detalj:

A namnutrymme är en teknik för att gruppera liknande identifierare (som klasser, funktioner , och variabler ) för att förhindra namnkonflikter. C++-standardbiblioteket tillhandahåller sina delar (som cin, cout, etc.) under std-namnområdet.

Termen 'standard' förkortas till 'std' , och alla element i standardbiblioteket finns i det. Genom att göra detta minskar namnkonflikter med identifierare som ställts in i din kod.

Låt oss nu prata om varför man använder namnutrymme std; uttalande används:

Utan att använda namnutrymme 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; } 

Som du kan se använder du namnområde std; uttalandet låter dig utelämna std:: prefix vid åtkomst till standardbibliotekskomponenter. Det gör din kod kortare och mer läsbar, eftersom du inte behöver upprepa std:: före varje standardbiblioteksidentifierare.

I/O-bibliotekshuvudfiler

Standardutgångsström (cout):

Cout-objektet är ett fördefinierat ostream-klassobjekt. Den är ansluten till standardutgångsenheten, som vanligtvis är en bildskärm. Cout används i kombination med ströminsättningsoperatorn (<<) to show the output on a console< p>

Låt oss se det enkla exemplet på en standardutgångsström (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; } 

Produktion

 Value of ary is: Welcome to C++ tutorial 

Standard ingångsström (cin)

De äter är ett fördefinierat objekt av ström klass. Den är ansluten till standardinmatningsenheten, som vanligtvis är ett tangentbord. cin används tillsammans med strömextraktionsoperatör (>>) för att läsa indata från en konsol.

Låt oss se det enkla exemplet på standardinmatningsström (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; } 

Produktion

 Enter your age: 22 Your age is: 22 

Standard slutlinje (endl)

De endl är ett fördefinierat objekt av vår fiende klass. Den används för att infoga en ny rad tecken och spolar strömmen.

Låt oss se det enkla exemplet på standardändrad (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;>

Obuffrad standardfelström (cerr):

cerr står för 'standard fel' .

Det är en obuffrad ström, vilket betyder att utdata skickas till cerr visas omedelbart på konsolen utan buffring.

Den används vanligtvis för att visa felmeddelanden och diagnostisk information, som måste visas omedelbart för att undvika förseningar orsakade av buffring.

Exempel: använder cerr:

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

Produktion

 This is an error message. 

buffrad standardfelström (täppa):

clog står för 'standardlogg' . Det är en buffrad ström, liknande cout. Det används ofta för att skriva informations- eller diagnostiska meddelanden som är mindre tidskänsliga än fel. Användningen av buffring kan förbättra prestandan när ett stort antal meddelanden visas.

Exempel: att använda täppa

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

Produktion

 This is an informational message. 

I båda exemplen kommer utgången att visas på konsolen. Men den största skillnaden mellan cerr och täppa till ligger i deras buffrande beteende. På grund av dess obuffrade karaktär, meddelanden som ges till cerr visas direkt, men meddelanden som skickas till täppa kan buffras för högre hastighet. Men de kommer fortfarande så småningom att visas på konsolen.

Obs: Det är viktigt att komma ihåg att den typ av meddelande du vill visa avgör om du använder cerr eller clog. Använd cerr för viktiga meddelanden som behöver omedelbar uppmärksamhet (som felmeddelanden) och använd clog för mindre kritiska diagnostiska eller informativa meddelanden som kan buffras för bättre prestanda.