C++ istream::tellg() function



The C++ std::istream::tellg() function is used to get the current position of the input pointer in an input stream. This function returns a streampos object, that represents the position in the stream. It is commonly used to determine the current read position when working with file streams or other input streams.

If the function fails, it returns a special value std::istream::pso_type(-1) to indicate an error.

Syntax

Following is the syntax for std::istream::tellg() function.

streampos tellg();

Parameters

It does not accepts any parameter.

Return Value

This function returns the current position in the stream.

Exceptions

If an exception is thrown, the object is in a valid state.

Data races

Modifies the stream object.

Example

In the following example, we are going to consider the basic usage of tellg() function.

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream a("TutorialsPoint");
    std::streampos x = a.tellg();
    std::cout << "Initial position: " << x << std::endl;
    return 0;
}

Output

Output of the above code is as follows −

Initial position: 0

Example

Consider the following example, where we are going to get the position after reading the character from the string.

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream x("Hi, Namaste");
    char a;
    x.get(a);
    std::streampos y = x.tellg();
    std::cout << "Position after reading character: " << y << std::endl;
    return 0;
}

Output

Following is the output of the above code −

Position after reading character: 1

Example

In the following example, we are going to use the seekg() along with the tellg() function.

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream a("TutorialsPoint");
    a.seekg(4);
    std::streampos x = a.tellg();
    std::cout << "Position after seeking : " << x << std::endl;
    return 0;
}

Output

If we run the above code it will generate the following output −

Position after seeking : 4
istream.htm
Advertisements