logo

C++ grunnleggende inngang og utgang (I/O)

C++ I/O-operasjon bruker strømkonseptet. Serien med byte eller flyt av data omtales som en strøm. Det akselererer ytelsen.

Hvis bytes overføres fra hovedminnet til en enhet som en skriver, skjerm, nettverkstilkobling osv. kalles dette en utdataoperasjon.

En inngangsoperasjon skjer når byte flyter fra en enhet som en skriver, skjerm eller nettverkstilkobling til hovedminnet.

I C++, forhåndsdefinerte funksjoner og erklæringer leveres gjennom overskriftsfiler, slik at du kan utføre spesifikke oppgaver uten å måtte skrive ny kode fra starten. Noen få viktige overskriftsfiler for input/output-operasjoner i C++ inkluderer funksjoner for å effektivt utføre input- og outputoppgaver. C++ Standard Library, en samling av klasser og metoder laget i programmeringsspråket C++, inneholder disse overskriftsfilene. La oss diskutere hovedhodefilene for input/output-operasjoner:

Overskriftsfil Funksjon og beskrivelse
Den brukes til å definere cout, cin og cerr objekter, som tilsvarer henholdsvis standard utgangsstrøm, standard inngangsstrøm og standard feilstrøm.
Den brukes til å erklære tjenester nyttige for å utføre formatert I/O, som f.eks settpresisjon og settw.
Den brukes til å deklarere tjenester for brukerkontrollert filbehandling.

iostream: Det er en av de viktigste header-filene for input/output-operasjoner i C++. Det står for 'input-output' strøm. For arbeid med ulike former for input/output-strømmer iostream header-filen inkluderer klassene istream (inndatastrøm) og ostream (utgangsstrøm) så vel som dets avledede klasser ifstream, ofstream , og strengstrøm . Denne overskriftsfilens mest brukte klasser er cin (standard inngang) og cout (standard utgang) , som lar deg lese brukerinndata og vise utdata til konsollen. For eksempel:

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

Produksjon

 Enter a number: 42 You entered: 42 

iomanip: Denne overskriftsfilen står for 'input-output manipulation' . Den gir verktøy for å formatere input og produksjon . Den lar deg endre justering, bredde, presisjon , og andre formateringsfunksjoner for input og output. Setw, setprecision, fixed, left, right , og andre regelmessig brukte funksjoner er oppført nedenfor. Det er spesielt nyttig for å presentere data på en bestemt måte.

Eksempel:

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

Produksjon

bash lese fil
 Value of pi: 3.14 

strøm: Overskriftsfilen for filinndata-/utdataoperasjoner kalles fstream . Den omfatter klasser for lesing fra og skriving til filer ifstream (inndatafilstrøm) og ofstream (utdatafilstrøm) . Systemet bruker disse klassene til å åpne 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; } 

Produksjon

 The file was written successfully. 

Disse overskriftsfilene er blant de mest avgjørende for C++ input/output oppgaver. Hver av dem har et spesifikt formål og tilbyr de nødvendige verktøyene for å lykkes med å administrere oppgaver som involverer input og output, enten det er i samspill med konsoll, formatering av utdata , eller arbeider med filer.

I C++ bruker vi ofte 'bruker navneområde std;' etter header-filene. De navneområde std; statement brukes ofte i C++ for å strømlinjeforme koden når du arbeider med standard bibliotekkomponenter. La oss undersøke denne uttalelsens funksjon og anvendelse mer detaljert:

EN navneområde er en teknikk for å gruppere lignende identifikatorer (som f.eks klasser, funksjoner , og variabler ) for å forhindre navnekonflikter. C++ Standard Library tilbyr delene (som cin, cout, etc.) under std-navneområdet.

Begrepet 'standard' er forkortet til 'std' , og alle elementene i standardbiblioteket er inneholdt i det. Ved å gjøre dette reduseres navnekonflikter med identifikatorer som er satt opp i koden din.

La oss nå snakke om hvorfor bruken av navneområdet std; uttalelsen brukes:

Uten å bruke 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, bruker du navneområde std; setningen lar deg utelate std:: prefiks når du får tilgang til standard bibliotekkomponenter. Det gjør koden din kortere og mer lesbar, siden du ikke trenger å gjenta std:: før hver standard bibliotekidentifikator.

I/O-bibliotekhodefiler

Standard utgangsstrøm (cout):

Cout-objektet er et forhåndsdefinert objekt i ostream-klassen. Den er koblet til standard utgangsenhet, som vanligvis er en skjerm. Cout brukes i kombinasjon med strøminnsettingsoperatoren (<<) to show the output on a console< p>

La oss se det enkle eksemplet på en standard utgangsstrø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; } 

Produksjon

 Value of ary is: Welcome to C++ tutorial 

Standard inngangsstrøm (cin)

De spiser er et forhåndsdefinert objekt av strøm klasse. Den er koblet til standardinndataenheten, som vanligvis er et tastatur. Cin brukes sammen med strømekstraksjonsoperatør (>>) for å lese inndata fra en konsoll.

La oss se det enkle eksemplet på standard inngangsstrø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; } 

Produksjon

 Enter your age: 22 Your age is: 22 

Standard sluttlinje (endl)

De endl er et forhåndsdefinert objekt av vår fiende klasse. Den brukes til å sette inn nye linjetegn og tømmer strømmen.

La oss se det enkle eksemplet på standard sluttlinje (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;>

Ubufret standard feilstrøm (cerr):

cerr står for 'standard feil' .

Det er en ubuffret strøm, noe som betyr at utdata sendes til cerr vises umiddelbart på konsollen uten buffering.

Den brukes vanligvis til å vise feilmeldinger og diagnostisk informasjon, som må vises umiddelbart for å unngå forsinkelser forårsaket av buffering.

Eksempel: ved å bruke cerr:

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

Produksjon

 This is an error message. 

bufret standard feilstrøm (tilstopping):

clog står for 'standard logg' . Det er en bufret bekk, lik cout. Det brukes ofte til å skrive informasjons- eller diagnostiske meldinger som er mindre tidssensitive enn feil. Bruk av buffering kan forbedre ytelsen når du viser et stort antall meldinger.

Eksempel: bruk av tresko

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

Produksjon

 This is an informational message. 

I begge eksemplene vil utgangen vises på konsollen. Imidlertid er hovedforskjellen mellom cerr og tette ligger i deres bufferadferd. På grunn av sin ubuffrede natur, meldinger gitt til cerr vises med en gang, men meldinger som sendes til clog kan bli bufret for høyere hastighet. Imidlertid vil de fortsatt vises på konsollen.

Merk: Det er viktig å huske at typen melding du ønsker å vise vil avgjøre om du bruker cerr eller clog. Bruk cerr for viktige meldinger som trenger umiddelbar oppmerksomhet (som feilmeldinger) og bruk clog for mindre kritiske diagnostiske eller informative meldinger som kan bufres for bedre ytelse.