A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cplusplus.com/reference/istream/basic_istream/unget/ below:

public member function

<istream> <iostream>

std::basic_istream::unget

Unget character

Attempts to decrease the current location in the stream by one character, making the last character extracted from the stream once again available to be extracted by input operations.

Internally, the function accesses the input sequence by first constructing a sentry object (with noskipws set to true). Then (if good), it calls sungetc on its associated stream buffer object (if any). Finally, it destroys the sentry object before returning.

If the

eofbit

flag is set before the call, the function fails (sets

failbit

and returns).


The function clears the

eofbit

flag, if set before the call.



If the call to sungetc fails, the function sets the badbit flag. Note that this may happen even if the function is called right after a character has been extracted from the stream (depending on the internals of the associated stream buffer object).

Calling this function sets the value returned by gcount to zero.



Parameters none

Return Value The basic_istream object (*this).

Errors are signaled by modifying the internal state flags:


flag error eofbit - failbit The construction of sentry failed (such as when the stream state was not good before the call). badbit Either the internal call to sungetc failed, or another error occurred on the stream (such as when the function catches an exception thrown by an internal operation, or when no stream buffer is associated with the stream).
When set, the integrity of the stream may have been affected. Multiple flags may be set by a single operation.

If the operation sets an internal state flag that was registered with member exceptions, the function throws an exception of member type failure.



Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// istream::unget example
#include <iostream>     // std::cin, std::cout
#include <string>       // std::string

int main () {
  std::cout << "Please, enter a number or a word: ";
  char c = std::cin.get();

  if ( (c >= '0') && (c <= '9') )
  {
    int n;
    std::cin.unget();
    std::cin >> n;
    std::cout << "You entered a number: " << n << '\n';
  }
  else
  {
    std::string str;
    std::cin.unget();
    getline (std::cin,str);
    std::cout << "You entered a word: " << str << '\n';
  }
  return 0;
}

Possible output:
Please, enter a number or a word: 7791
You entered a number: 7791


Data races Modifies the stream object.
Concurrent access to the same stream object may cause data races.

Exception safetyBasic guarantee: if an exception is thrown, the object is in a valid state.
It throws an exception of member type failure if the resulting error state flag is not goodbit and member exceptions was set to throw for that state.
Any exception thrown by an internal operation is caught and handled by the function, setting badbit. If badbit was set on the last call to exceptions, the function rethrows the caught exception.

See also
basic_istream::get
Get characters (public member function)
basic_istream::putback
Put character back (public member function)

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4