Using peek() and putback() with cin in C++

By: Henry Emailed: 1600 times Printed: 2051 times    

Latest comments
By: rohit kumar - how this program is work
By: Kirti - Hi..thx for the hadoop in
By: Spijker - I have altered the code a
By: ali mohammed - why we use the java in ne
By: ali mohammed - why we use the java in ne
By: mizhelle - when I exported the data
By: raul - no output as well, i'm ge
By: Rajesh - thanx very much...
By: Suindu De - Suppose we are executing

The input object cin has two additional methods that can come in rather handy: peek(), which looks at but does not extract the next character, and putback(), which inserts a character into the input stream. Listing below illustrates how these might be used.

1:     // Using peek() and putback()
2:     #include <iostream.h>
4:     int main()
5:     {
6:        char ch;
7:        cout << "enter a phrase: ";
8:        while ( cin.get(ch) )
9:        {
10:          if (ch == `!')
11:             cin.putback(`$');
12:          else
13:             cout << ch;
14:          while (cin.peek() == `#')
15:             cin.ignore(1,'#');
16:       }
17:     return 0;
18: }

Output: enter a phrase: Now!is#the!time#for!fun#!

Analysis: On line 6, a character variable, ch, is declared, and on line 7, the user is prompted to enter a phrase. The purpose of this program is to turn any exclamation marks (!) into dollar signs ($) and to remove any pound symbols (#).

The program loops as long as it is getting characters other than the end of file (remember that cin.get() returns 0 for end of file). If the current character is an exclamation point, it is thrown away and the $ symbol is put back into the input buffer; it will be read the next time through. If the current item is not an exclamation point, it is printed. The next character is "peeked" at, and when pound symbols are found, they are removed.

This is not the most efficient way to do either of these things (and it won't find a pound symbol if it is the first character), but it does illustrate how these methods work. They are relatively obscure, so don't spend a lot of time worrying about when you might really use them. Put them into your bag of tricks; they'll come in handy sooner or later.


TIP: peek() and putback() are typically used for parsing strings and other data, such as when writing a compiler.

C++ Home | All C++ Tutorials | Latest C++ Tutorials

Sponsored Links

If this tutorial doesn't answer your question, or you have a specific question, just ask an expert here. Post your question to get a direct answer.

Bookmark and Share


1. View Comment

how doeas peek work in a c++ program

View Tutorial          By: odwa at 2008-02-29 02:44:19
2. View Comment

Da program wont work if '#' is the first character!

View Tutorial          By: Kala at 2012-09-05 00:24:59

Your name (required):

Your email(required, will not be shown to the public):

Your sites URL (optional):

Your comments:

More Tutorials by Henry
Generating Your Key Pair example using keytool in Java
Summary of Operators in Java
JDBC Basics and JDBC Components
The IterationTag Interface in JSP
Trigonometric, Hyperbolic, Exponential and Logarithmic Functions in C
Using Bit-field in C
Java Beans and the Expression Language
Initialization of Variables in C
Creating Struts Modules
else if statement in C
Line Counting sample program in C
Accessing Context Data in Beans using JSF
Using peek() and putback() with cin in C++
Internationalization Support in J2ME MIDP
java.lang.SecurityException: MIDP lifecycle does not support system exit.

More Tutorials in C++
Two-Dimensional Array Manipulation in C++
Calculate average using Two-Dimensional Array in C++
Compute the square root of the sum of the squares of an array in C++
Matrix using nested for loops in C++
Sorting an array of Strings in C++
Calculating total based on the given quantity and price in C++
Compiling and Linking Multiple Source Files in C++
Enumerations in C++
Program to add two numbers in C++
Comments in C++
while loop in C++
for loop in C++
Programming errors a compiler will detect in C++
if in C++
Using the Built-in Arithmetic Types in C++

More Latest News
Most Viewed Articles (in C++ )
Using cout.width() in C++
C++ Recursion function explained using Fibonacci series
Advanced if Statements in C++
Demonstrating global and local variables in C++
Dot (.) vs Arrow (->) to access data members in C++
C++ Destructors Versus Java Finalization
strlen() sample program in C++
Printing values in DEBUG mode in C++
Implementing Pure Virtual Functions in C++
Character String Literals in C++
C++ keywords
Calculating total based on the given quantity and price in C++
Difference between Procedural, Structured, and Object-Oriented Programming
Using cout in C++
Using Comments in a C++ Program
Most Emailed Articles (in C++)
Specifying default values to function parameters in C++
Nested Loops in C++
The Stack and the Free Store in C++
Calculating total based on the given quantity and price in C++
Constructors and Destructors in C++
Dot (.) vs Arrow (->) to access data members in C++
Operator Precedence in C++
qsort() sample program in C++
Getting User Input Using cin in C++
Using command-line arguments in C++
Programming errors a compiler will detect in C++
C++ keywords
Matrix using nested for loops in C++
Use of Conditional (Ternary) Operator in C++
Tutorial on Classes and Members in C++