logo

Funkcja Cin.ignore() w C++

W C++, cin.ignore() funkcja jest niezbędna do rozwiązania problemy związane z wejściem , zwłaszcza przy użyciu jedzenie I funkcje getline razem. Czyszcząc bufor wejściowy i usuwając niepotrzebne znaki, programiści mogą zapewnić, że procesy wejściowe będą działać zgodnie z oczekiwaniami i dokładnie. W tym artykule przeanalizujemy Funkcja cin.ignore(). składnia, zastosowanie, przykłady , I oczekiwane produkty .

The strumień klasa Funkcja cin.ignore(). może być używany do ignorowania tekstu do określonej liczby znaków lub do momentu znalezienia określonego ogranicznika. Jego składnia jest następująca:

cin.ignore(n, ogranicznik);

Parametry funkcji Cin.ignore() Składnia:

n (opcjonalnie): Wskazuje, ile znaków powinno mieć ignorowane .

Separator (opcjonalnie): Określa A znak ogranicznika , po czym wprowadzone dane zostaną pominięte. Jeśli nie określony , domyślnie 1 . Jeśli nic nie jest określony , Następnie znak ewline („n”) jest używany przez domyślny .

Użycie i działanie funkcji Cin.ignore():

Głównym celem Funkcja cin.ignore(). jest usunąć niepożądane postacie z bufor wejściowy . Można teraz odczytać nowe dane wejściowe, ponieważ bufor wejściowy został wyczyszczony. Można go stosować w różnych okolicznościach, także po odczytanie wpisu numerycznego z jedzenie , zanim czytanie ciągów z getline oraz podczas łączenia oddzielnych procedur wejściowych.

Dopóki nie zostanie spełniony jeden z poniższych warunków spotkał, cin.ignore() czyta znaków z bufora wejściowego i odrzuca je:

  1. Jeśli „n” znaków zostały określone, zostały pominięte.
  2. Dopóki nie został znaleziony ogranicznik (jeśli został określony), znaki były ignorowane.
  3. Kiedy to nastąpi, bufor wejściowy jest pełna.

Pominięcie jednego znaku

Zastanówmy się nad prostym scenariuszem, w którym musimy odczytać dwa znaki od użytkownika. Ale nie potrzebujemy pierwszy znak ; potrzebujemy tylko drugi . Jak pokazano poniżej, możemy to osiągnąć za pomocą 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;>

Wyjaśnienie:

W powyższym przykładzie używamy std::noskipws Do zatrzymaj znaki z czytania z pominiętymi białymi znakami. W celu usunięcia niepożądanego znaku po przeczytaniu pierwszego znaku wywołujemy cin.ignore() bez żadnych argumentów. W rezultacie „drugi znak” zmienna zawiera tylko drugi znak .

Aż do ogranicznika

Powiedzmy, że po prostu tego chcemy Czytać pierwsze słowo z wiersza tekstu podanego przez użytkownika. Możemy to osiągnąć za pomocą cin.ignore() i ogranicznik określony w następujący sposób:

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

Wyjaśnienie:

W powyższym przykładzie wiodący Biała przestrzeń jest pomijane przy użyciu std::ws przed odczytaniem danych wejściowych za pomocą getline() . Kiedy ogranicznik jest ustawiony na spacja (' '), cin.ignore() wyodrębni tylko pierwsze słowo i zignoruje wszystkie pozostałe znaki aż do tego momentu.

Wniosek:

Aby rozwiązać problemy związane z danymi wejściowymi i zapewnić dokładną kontrolę nad buforem wejściowym, biblioteka C++ Funkcja cin.ignore(). jest użytecznym narzędziem. Programiści mogą skutecznie obsługiwać niepożądane znaki i osiągać wymagane zachowanie w swoich programach, rozumiejąc ich składnię, użycie i zasadę działania.

Programiści mogą zapewnić dokładne i przewidywane procedury wprowadzania danych, korzystając z metody Funkcja cin.ignore(). aby przejść do wyznaczonego ogranicznika lub zignorować zestaw znaków. Podczas pracy z mieszanymi typami danych wejściowych, wprowadzaniem numerycznym, po którym następuje wprowadzanie ciągu znaków, lub podczas odczytywania ciągów za pomocą getline() , ta funkcja jest całkiem pomocna.

Programiści mogą uniknąć nieoczekiwanego zachowania spowodowanego zatrzymywaniem znaków w buforze wejściowym, używając ich prawidłowo cin.ignore() . Funkcja ta, czyszcząc bufor i umożliwiając odczyt nowych danych wejściowych, pomaga w utrzymaniu integralności kolejnych operacji wejściowych.

Aby właściwie obsługiwać różne warunki wejściowe, konieczne jest zrozumienie parametrów i zachowania cin.ignore() . Z pomocą cin.ignore() , programiści mogą tworzyć potężny I niezawodny systemy obsługi wejść dla swoich Programy w C++ , niezależnie od tego, czy chcą zignorować pojedynczy znak, czy przejść do ogranicznika.

Podsumowując, Funkcja cin.ignore(). jest kluczową częścią przetwarzania danych wejściowych w C++, ponieważ umożliwia programistom usuwanie niepotrzebnych znaków i gwarantuje dokładne i płynne operacje wejściowe. Zrozumienie, jak efektywnie z niego korzystać, może znacznie poprawić stabilność i użyteczność aplikacji C++.