logo

C++ Basisinvoer en -uitvoer (I/O)

C++ I/O-bewerking maakt gebruik van het streamconcept. De reeks bytes of gegevensstroom wordt een stroom genoemd. Het versnelt de prestaties.

Als bytes worden overgedragen van het hoofdgeheugen naar een apparaat zoals een printer, beeldscherm, netwerkverbinding, enz., wordt dit een uitvoerbewerking genoemd.

Er vindt een invoerbewerking plaats wanneer bytes van een apparaat, zoals een printer, beeldscherm of netwerkverbinding, naar het hoofdgeheugen stromen.

In C++, vooraf gedefinieerde functies en declaraties worden geleverd via headerbestanden, waardoor u specifieke taken kunt uitvoeren zonder vanaf het begin nieuwe code te hoeven schrijven. Een paar belangrijke headerbestanden voor invoer-/uitvoerbewerkingen in C++ bevatten functies voor het effectief uitvoeren van invoer- en uitvoertaken. De C++ Standard Library, een verzameling klassen en methoden gemaakt in de programmeertaal C++, bevat deze headerbestanden. Laten we de belangrijkste headerbestanden voor invoer-/uitvoerbewerkingen bespreken:

Koptekstbestand Functie en beschrijving
Het wordt gebruikt om de cout, cin en cerr objecten, die respectievelijk overeenkomen met de standaarduitvoerstroom, de standaardinvoerstroom en de standaardfoutstroom.
Het wordt gebruikt om services nuttig te verklaren voor het uitvoeren van geformatteerde I/O, zoals setprecisie en setw.
Het wordt gebruikt om services aan te geven voor door de gebruiker gecontroleerde bestandsverwerking.

iostream: Het is een van de belangrijkste headerbestanden voor invoer-/uitvoerbewerkingen in C++. Het staat voor 'invoer uitvoer' stroom. Voor het werken met verschillende vormen van input-/outputstromen is de iostream header-bestand bevat de klassen istream (invoerstroom) En ostream (uitvoerstroom) evenals de afgeleide klassen ifstream, ofstream , En stringstroom . De meest gebruikte klassen van dit headerbestand zijn cin (standaardinvoer) En cout (standaarduitvoer) , waarmee u gebruikersinvoer kunt lezen en uitvoer naar de console kunt weergeven. Bijvoorbeeld:

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

Uitvoer

 Enter a number: 42 You entered: 42 

iomanip: Dit headerbestand staat voor 'invoer-uitvoermanipulatie' . Het biedt hulpmiddelen voor het formatteren invoer En uitgang . Hiermee kunt u de uitlijning, breedte, precisie en andere opmaakfuncties van de invoer en uitvoer. Setw, setprecisie, vast, links, rechts , en andere regelmatig gebruikte functies worden hieronder vermeld. Het is vooral handig om gegevens op een bepaalde manier te presenteren.

Voorbeeld:

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

Uitvoer

java concat-reeks
 Value of pi: 3.14 

stroom: Het headerbestand voor bestandsinvoer/uitvoerbewerkingen wordt aangeroepen fstroom . Het omvat lessen voor het lezen van en schrijven naar bestanden ifstream (invoerbestandsstream) En ofstream (uitvoerbestandsstroom) . Het systeem gebruikt deze klassen om alleen-lezen- en alleen-schrijven-bestanden te openen.

Voorbeeld:

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

Uitvoer

 The file was written successfully. 

Deze headerbestanden behoren tot de meest cruciale voor C++ invoer-/uitvoertaken. Elk ervan heeft een specifiek doel en biedt de tools die nodig zijn om taken met input en output succesvol te beheren, of het nu gaat om interactie met de console, opmaakuitvoer of werken met bestanden.

In C++ gebruiken we vaak 'namespace std; gebruiken;' na de headerbestanden. De naamruimte std; statement wordt vaak gebruikt in C++ om de code te stroomlijnen bij het werken met standaardbibliotheekcomponenten. Laten we de functie en toepassing van deze verklaring in meer detail onderzoeken:

A naamruimte is een techniek voor het groeperen van vergelijkbare identificatiegegevens (zoals klassen, functies , En variabelen ) om naamgevingsconflicten te voorkomen. De C++ Standard Library levert zijn onderdelen (zoals cin, cout, etc.) onder de std-naamruimte.

De voorwaarde 'standaard' wordt ingekort tot 'soa' , en alle elementen van de standaardbibliotheek zijn erin opgenomen. Door dit te doen, worden naamconflicten met ID's die in uw code zijn ingesteld, verminderd.

Laten we het nu hebben over waarom de naamruimte std; verklaring wordt gebruikt:

Zonder naamruimte std te gebruiken:

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

Zoals je kunt zien, gebruik je de naamruimte std; Met de verklaring kunt u de std:: voorvoegsel bij toegang tot standaardbibliotheekcomponenten. Het maakt uw code korter en beter leesbaar, omdat u deze niet hoeft te herhalen soa:: vóór elke standaardbibliotheek-ID.

I/O-bibliotheekheaderbestanden

Standaard uitgangsstroom (cout):

Het cout-object is een vooraf gedefinieerd object van de ostream-klasse. Het is verbonden met het standaarduitvoerapparaat, meestal een beeldscherm. De cout wordt gebruikt in combinatie met de stream-invoegoperator (<<) to show the output on a console< p>

Laten we het eenvoudige voorbeeld bekijken van een standaard uitvoerstroom (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; } 

Uitvoer

 Value of ary is: Welcome to C++ tutorial 

Standaard invoerstroom (cin)

De aan het eten is een vooraf gedefinieerd object van stroom klas. Het is verbonden met het standaardinvoerapparaat, meestal een toetsenbord. De cin wordt gebruikt in combinatie met de streamextractie-operator (>>) om de invoer van een console te lezen.

Laten we het eenvoudige voorbeeld van de standaardinvoerstroom (cin) bekijken:

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

Uitvoer

 Enter your age: 22 Your age is: 22 

Standaard eindlijn (endl)

De eindl is een vooraf gedefinieerd object van onze vijand klas. Het wordt gebruikt om nieuwe regeltekens in te voegen en de stream leeg te spoelen.

Laten we het eenvoudige voorbeeld van een standaardeindregel (endl) bekijken:

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

Niet-gebufferde standaardfoutstroom (cerr):

cerr betekent 'standaardfout' .

Het is een ongebufferde stream, wat betekent dat de uitvoer ernaar wordt verzonden cerr wordt onmiddellijk weergegeven op de console zonder buffering.

Het wordt doorgaans gebruikt voor het weergeven van foutmeldingen en diagnostische informatie, die onmiddellijk moeten worden weergegeven om vertragingen als gevolg van buffering te voorkomen.

Voorbeeld: gebruik cerr:

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

Uitvoer

 This is an error message. 

gebufferde standaardfoutstroom (verstopping):

klomp staat voor 'standaard logboek' . Het is een gebufferde stroom, vergelijkbaar met cout. Het wordt vaak gebruikt voor het schrijven van informatieve of diagnostische berichten die minder tijdgevoelig zijn dan fouten. Het gebruik van buffering kan de prestaties verbeteren bij het weergeven van een groot aantal berichten.

Voorbeeld: gebruik van verstopping

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

Uitvoer

 This is an informational message. 

In beide voorbeelden verschijnt de uitvoer op de console. Het belangrijkste verschil tussen cerr En verstoppen ligt in hun buffergedrag. Vanwege het ongebufferde karakter kunnen berichten worden verzonden naar cerr worden meteen weergegeven, maar berichten die naar Clog worden verzonden, kunnen worden gebufferd voor een grotere snelheid. Ze zullen echter uiteindelijk nog steeds op de console verschijnen.

Opmerking: Het is belangrijk om te onthouden dat het type bericht dat u wilt weergeven, bepaalt of u cerr of clog gebruikt. Gebruik cerr voor essentiële berichten die onmiddellijke aandacht vereisen (zoals foutmeldingen) en gebruik clog voor minder kritische diagnostische of informatieve berichten die kunnen worden gebufferd voor betere prestaties.