logo

Cin.ignore()-functie in C++

In C++ wordt de cin.ignore() functie is essentieel voor het oplossen invoergerelateerde problemen , vooral bij gebruik van de aan het eten En getline-functies samen. Door de invoerbuffer leeg te maken en onnodige tekens te verwijderen, kunnen ontwikkelaars ervoor zorgen dat invoerprocessen zich zoals verwacht en nauwkeurig gedragen. In dit artikel zullen we onderzoeken cin.ignore() functie syntaxis, gebruik, voorbeelden , En verwachte opbrengsten .

De stroom klasse cin.ignore() functie kan worden gebruikt om tekst te negeren tot een bepaald aantal tekens of totdat een specifiek scheidingsteken wordt gevonden. De syntaxis is als volgt:

cin.ignore(n, scheidingsteken);

Parameters van de functie Cin.ignore() Syntaxis:

n (optioneel): Het geeft aan hoeveel tekens er moeten zijn buiten beschouwing gelaten .

Scheidingsteken (optioneel): Het specificeert een scheidingsteken karakter , waarna de invoer wordt genegeerd. Als niet gespecificeerd , standaard ingesteld 1 . Als er niets is gespecificeerd , Dan ewline-teken ('n') wordt gebruikt door standaard .

omkerende tekenreeks java

Gebruik en werking van de functie Cin.ignore():

Het voornaamste doel van de cin.ignore() functie is om te verwijderen ongewenste karakters van de invoerbuffer . Nieuwe invoer kan nu worden gelezen omdat de invoerbuffer is leeggemaakt. Het kan onder verschillende omstandigheden worden gebruikt, ook daarna numerieke invoer lezen met aan het eten , voor snaren lezen met lijn krijgen , en bij het combineren van afzonderlijke invoerprocedures.

Tot een van de volgende omstandigheden zich voordoet ontmoet, cin.ignore() leest tekens uit de invoerbuffer en verwijdert ze:

  1. Als 'n'-tekens waren gespecificeerd, werden ze buiten beschouwing gelaten.
  2. Totdat het scheidingsteken (indien opgegeven) werd gevonden, werden tekens genegeerd.
  3. Wanneer dit het geval is, zal de invoerbuffer is vol.

Eén karakter weglaten

Laten we eens nadenken over een eenvoudig scenario waarin we twee tekens van de gebruiker moeten lezen. Maar we hebben de eerste karakter ; we hebben alleen de nodig seconde . Zoals hieronder wordt gedemonstreerd, kunnen we dit bereiken met behulp van cin.ignore() .

 #include int main() { char secondCharacter; std::cout&lt;&gt;std::noskipws&gt;&gt;secondCharacter; std::cin.ignore(); std::cout&lt;&lt; &apos;The second character is: &apos; &lt;<secondcharacter<<std::endl; return 0; } < pre> <p> <strong>Output:</strong> </p> <pre> Enter two characters: AB The second character is: B </pre> <p> <strong>Explanation:</strong> </p> <p>In the above example, we use <strong> <em>std::noskipws</em> </strong> to <strong> <em>stop characters</em> </strong> from reading with whitespace skipped. In order to remove the undesirable character after reading the first character, we call <strong> <em>cin.ignore()</em> </strong> without any arguments. As a result, the <strong> <em>&apos;secondCharacter&apos;</em> </strong> variable only contains the <strong> <em>second character</em> </strong> .</p> <h3>Until a Delimiter</h3> <p>Let&apos;s say we simply want to <strong> <em>read</em> </strong> the first word from a user-provided line of text. We can accomplish this with the help of <strong> <em>cin.ignore()</em> </strong> and the delimiter specified as follows:</p> <pre> #include #include int main() { std::string firstWord; std::cout&lt;&gt;std::ws, firstWord, &apos; &apos;); std::cout&lt;&lt; &apos;The first word is: &apos; &lt;<firstword<<std::endl; return 0; } < pre> <p> <strong>Output:</strong> </p> <pre> Enter a sentence: Hello, World! How are you? The first word is: Hello, </pre> <p> <strong>Explanation:</strong> </p> <p>In the above example, leading <strong> <em>whitespace</em> </strong> is skipped using <strong> <em>std::ws</em> </strong> before the input is read using <strong> <em>getline()</em> </strong> . When the <strong> <em>delimiter</em> </strong> is set to a <strong> <em>space (&apos; &apos;), cin.ignore()</em> </strong> will only extract the first word and disregard all other characters up to that point.</p> <h2>Conclusion:</h2> <p>For addressing input-related concerns and providing exact control over the input buffer, the C++ <strong> <em>cin.ignore() function</em> </strong> is a useful tool. Developers can efficiently handle undesired characters and accomplish the required behavior in their programs by understanding its syntax, usage, and functioning principle.</p> <p>Developers can ensure precise and anticipated input procedures by using the <strong> <em>cin.ignore() function</em> </strong> to skip until a designated delimiter or disregard a set of characters. When working with mixed input types, numeric input that is followed by string input, or when reading strings using <strong> <em>getline()</em> </strong> , this function is quite helpful.</p> <p>Developers can avoid unexpected behavior brought on by lingering characters in the input buffer by properly using <strong> <em>cin.ignore()</em> </strong> . By clearing the buffer and allowing for the reading of new input, this function aids in maintaining the integrity of following input operations.</p> <p>For proper handling of various input conditions, it is imperative to comprehend the parameters and behavior of <strong> <em>cin.ignore()</em> </strong> . With the help of <strong> <em>cin.ignore()</em> </strong> , programmers can create <strong> <em>powerful</em> </strong> and <strong> <em>dependable</em> </strong> input handling systems for their <strong> <em>C++ programs</em> </strong> , whether they want to ignore a single character or skip till a delimiter.</p> <p>In conclusion, the <strong> <em>cin.ignore() function</em> </strong> is a crucial part of C++ input processing since it enables programmers to remove unnecessary characters and guarantee accurate and seamless input operations. Understanding how to use it effectively can considerably improve the stability and usability of C++ applications.</p> <hr></firstword<<std::endl;></pre></secondcharacter<<std::endl;>

Uitleg:

In het bovenstaande voorbeeld gebruiken we std::noskipws naar karakters stoppen van lezen met overgeslagen witruimte. Om het ongewenste teken te verwijderen na het lezen van het eerste teken, bellen we cin.ignore() zonder enige argumenten. Als gevolg hiervan is de 'tweede karakter' variabele bevat alleen de tweede karakter .

Tot een scheidingsteken

Laten we zeggen dat we dat gewoon willen lezen het eerste woord uit een door de gebruiker opgegeven tekstregel. Dit kunnen wij realiseren met behulp van cin.ignore() en het scheidingsteken als volgt gespecificeerd:

 #include #include int main() { std::string firstWord; std::cout&lt;&gt;std::ws, firstWord, &apos; &apos;); std::cout&lt;&lt; &apos;The first word is: &apos; &lt;<firstword<<std::endl; return 0; } < pre> <p> <strong>Output:</strong> </p> <pre> Enter a sentence: Hello, World! How are you? The first word is: Hello, </pre> <p> <strong>Explanation:</strong> </p> <p>In the above example, leading <strong> <em>whitespace</em> </strong> is skipped using <strong> <em>std::ws</em> </strong> before the input is read using <strong> <em>getline()</em> </strong> . When the <strong> <em>delimiter</em> </strong> is set to a <strong> <em>space (&apos; &apos;), cin.ignore()</em> </strong> will only extract the first word and disregard all other characters up to that point.</p> <h2>Conclusion:</h2> <p>For addressing input-related concerns and providing exact control over the input buffer, the C++ <strong> <em>cin.ignore() function</em> </strong> is a useful tool. Developers can efficiently handle undesired characters and accomplish the required behavior in their programs by understanding its syntax, usage, and functioning principle.</p> <p>Developers can ensure precise and anticipated input procedures by using the <strong> <em>cin.ignore() function</em> </strong> to skip until a designated delimiter or disregard a set of characters. When working with mixed input types, numeric input that is followed by string input, or when reading strings using <strong> <em>getline()</em> </strong> , this function is quite helpful.</p> <p>Developers can avoid unexpected behavior brought on by lingering characters in the input buffer by properly using <strong> <em>cin.ignore()</em> </strong> . By clearing the buffer and allowing for the reading of new input, this function aids in maintaining the integrity of following input operations.</p> <p>For proper handling of various input conditions, it is imperative to comprehend the parameters and behavior of <strong> <em>cin.ignore()</em> </strong> . With the help of <strong> <em>cin.ignore()</em> </strong> , programmers can create <strong> <em>powerful</em> </strong> and <strong> <em>dependable</em> </strong> input handling systems for their <strong> <em>C++ programs</em> </strong> , whether they want to ignore a single character or skip till a delimiter.</p> <p>In conclusion, the <strong> <em>cin.ignore() function</em> </strong> is a crucial part of C++ input processing since it enables programmers to remove unnecessary characters and guarantee accurate and seamless input operations. Understanding how to use it effectively can considerably improve the stability and usability of C++ applications.</p> <hr></firstword<<std::endl;>

Uitleg:

In het bovenstaande voorbeeld leidend witte ruimte wordt overgeslagen standaard::ws voordat de invoer wordt gelezen met behulp van getline() . Wanneer de scheidingsteken is ingesteld op een spatie (' '), cin.ignore() zal alleen het eerste woord extraheren en alle andere tekens tot dan toe negeren.

Conclusie:

Voor het aanpakken van invoergerelateerde problemen en het bieden van exacte controle over de invoerbuffer, is de C++ cin.ignore() functie is een handig hulpmiddel. Ontwikkelaars kunnen op efficiënte wijze omgaan met ongewenste karakters en het vereiste gedrag in hun programma's bewerkstelligen door de syntaxis, het gebruik en het werkingsprincipe ervan te begrijpen.

Ontwikkelaars kunnen nauwkeurige en geanticipeerde invoerprocedures garanderen door gebruik te maken van de cin.ignore() functie om over te slaan tot een bepaald scheidingsteken of een reeks tekens te negeren. Bij het werken met gemengde invoertypen, numerieke invoer die wordt gevolgd door stringinvoer, of bij het lezen van strings met behulp van getline() , deze functie is behoorlijk nuttig.

Ontwikkelaars kunnen onverwacht gedrag dat wordt veroorzaakt door achtergebleven karakters in de invoerbuffer vermijden door correct gebruik te maken van cin.ignore() . Door de buffer leeg te maken en het lezen van nieuwe invoer mogelijk te maken, helpt deze functie bij het behouden van de integriteit van volgende invoerbewerkingen.

np nullen

Voor een juiste afhandeling van verschillende invoervoorwaarden is het absoluut noodzakelijk dat u de parameters en het gedrag ervan begrijpt cin.ignore() . Met de hulp van cin.ignore() , programmeurs kunnen creëren krachtig En betrouwbaar invoerverwerkingssystemen voor hun C++-programma's , of ze nu een enkel teken willen negeren of overslaan tot een scheidingsteken.

Concluderend: de cin.ignore() functie is een cruciaal onderdeel van C++-invoerverwerking, omdat het programmeurs in staat stelt onnodige tekens te verwijderen en nauwkeurige en naadloze invoerbewerkingen te garanderen. Als u begrijpt hoe u het effectief kunt gebruiken, kunt u de stabiliteit en bruikbaarheid van C++-toepassingen aanzienlijk verbeteren.