logo

C++ grundlæggende input og output (I/O)

C++ I/O-operation bruger stream-konceptet. Serien af ​​bytes eller datastrømmen omtales som en strøm. Det accelererer ydeevnen.

Hvis bytes overføres fra hovedhukommelsen til en enhed som en printer, skærm, netværksforbindelse osv. kaldes dette en outputoperation.

En inputhandling opstår, når bytes flyder fra en enhed, såsom en printer, skærm eller netværksforbindelse til hovedhukommelsen.

I C++, foruddefinerede funktioner og erklæringer leveres gennem header-filer, så du kan udføre specifikke opgaver uden at skulle skrive ny kode fra starten. Et par vigtige header-filer til input/output-operationer i C++ inkluderer funktioner til effektivt at udføre input- og outputopgaver. C++ Standard Library, en samling af klasser og metoder oprettet i C++ programmeringssproget, indeholder disse header-filer. Lad os diskutere de vigtigste header-filer for input/output-operationer:

Overskriftsfil Funktion og beskrivelse
Det bruges til at definere cout, cin og cerr objekter, som svarer til henholdsvis standardoutputstrøm, standardinputstrøm og standardfejlstrøm.
Det bruges til at erklære tjenester nyttige til at udføre formateret I/O, som f.eks sætpræcision og sætw.
Det bruges til at erklære tjenester til brugerstyret filbehandling.

iostream: Det er en af ​​de vigtigste header-filer til input/output-operationer i C++. Det står for 'input-output' strøm. Til arbejde med forskellige former for input/output-strømme iostream header-filen inkluderer klasserne istream (inputstrøm) og ostream (outputstrøm) såvel som dets afledte klasser ifstream, ofstream , og strengstrøm . Denne header-fils mest anvendte klasser er cin (standardindgang) og cout (standard output) , som giver dig mulighed for at læse brugerinput og vise output til konsollen. For eksempel:

 #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: Denne header-fil står for 'input-output manipulation' . Det giver værktøjer til at formatere input og produktion . Det giver dig mulighed for at ændre justering, bredde, præcision , og andre formateringsfunktioner for input og output. Indstil, sæt præcision, fast, venstre, højre , og andre regelmæssigt brugte funktioner er anført nedenfor. Det er især praktisk til at præsentere data på en bestemt måde.

Eksempel:

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

Produktion

c kodearray af strenge
 Value of pi: 3.14 

strøm: Header-filen for filinput/output-operationer kaldes fstream . Det omfatter klasser til at læse fra og skrive til filer ifstream (input filstrøm) og ofstream (output filstrøm) . Systemet bruger disse klasser til at åbne skrivebeskyttede og skrivebeskyttede filer.

Eksempel:

 #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. 

Disse header-filer er blandt de mest afgørende for C++ input/output opgaver. Hver enkelt har et specifikt formål og tilbyder de nødvendige værktøjer til succesfuld håndtering af opgaver, der involverer input og output, uanset om det interagerer med konsol, formatering af output , eller arbejder med filer.

I C++ bruger vi ofte 'bruger navneområde std;' efter header-filerne. Det navneområde std; sætning bruges ofte i C++ til at strømline koden, når du arbejder med standard bibliotekskomponenter. Lad os undersøge denne erklærings funktion og anvendelse mere detaljeret:

EN navneområde er en teknik til at gruppere lignende identifikatorer (som f.eks klasser, funktioner , og variabler ) for at forhindre navnekonflikter. C++ Standardbiblioteket leverer dets dele (såsom cin, cout osv.) under std-navnerummet.

Begrebet 'standard' er forkortet til 'std' , og alle elementer i standardbiblioteket er indeholdt i det. Ved at gøre dette reduceres navnekonflikter med identifikatorer opsat i din kode.

Lad os nu tale om, hvorfor brugen af ​​navneområde std; udsagn bruges:

Uden at bruge navneområde 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, bruger du navneområde std; erklæring giver dig mulighed for at udelade std:: præfiks ved adgang til standardbibliotekskomponenter. Det gør din kode kortere og mere læsbar, da du ikke behøver at gentage std:: før hver standard bibliotek-id.

I/O-biblioteksoverskriftsfiler

Standard udgangsstrøm (cout):

Cout-objektet er et foruddefineret objekt i ostream-klassen. Den er forbundet til standard outputenheden, som normalt er en skærm. Cout'en bruges i kombination med stream-indsættelsesoperatoren (<<) to show the output on a console< p>

Lad os se det enkle eksempel på en standard outputstrø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 inputstrøm (cin)

Det spise er et foruddefineret objekt af strøm klasse. Den er forbundet med standardinputenheden, som normalt er et tastatur. cin bruges sammen med strømekstraktionsoperatør (>>) til at læse input fra en konsol.

Lad os se det enkle eksempel på standard inputstrø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)

Det endl er et foruddefineret objekt af vores fjende klasse. Den bruges til at indsætte nye linjetegn og skyller strømmen.

Lad os se det enkle eksempel på standard slutlinje (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;>

Ikke-bufret standardfejlstrøm (cerr):

cerr står for 'standard fejl' .

Det er en ubufferet strøm, hvilket betyder, at output sendes til cerr vises straks på konsollen uden buffering.

Det bruges typisk til at vise fejlmeddelelser og diagnosticeringsoplysninger, som skal vises med det samme for at undgå forsinkelser forårsaget af buffering.

Eksempel: ved at bruge 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. 

bufferet standard fejlstrøm (tilstopning):

clog står for 'standard log' . Det er en bufferstrøm, der ligner cout. Det bruges ofte til at skrive informations- eller diagnostiske meddelelser, der er mindre tidsfølsomme end fejl. Brugen af ​​buffering kan forbedre ydeevnen, når der vises et stort antal meddelelser.

Eksempel: brug af træsko

 #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 begge eksempler vil output vises på konsollen. Men den væsentligste forskel mellem cerr og tilstoppe ligger i deres bufferadfærd. På grund af dens ubuffrede karakter, beskeder givet til cerr vises med det samme, men meddelelser, der sendes til tilstopning, kan blive bufret for større hastighed. De vil dog i sidste ende stadig vises på konsollen.

Bemærk: Det er vigtigt at huske, at den type besked, du ønsker at vise, afgør, om du bruger cerr eller clog. Brug cerr til væsentlige meddelelser, der kræver øjeblikkelig opmærksomhed (som fejlmeddelelser), og brug clog til mindre kritiske diagnostiske eller informative meddelelser, der kan bufres for bedre ydeevne.