Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Hasło nie zostało zweryfikowane
Niniejsze hasło zostało opracowane, jednak nie zostało ono zweryfikowane przez administrację serwisu. Jeżeli znalazłeś błędy merytoryczne w niniejszym dokumencie, prosimy o ich zgłoszenie na forum w dziale Znalezione błędy.
Opracował: Berux
Udoskonalił: jankowalski25
Język C++

basic_istream::peek

[metoda] Odczytuje następny znak bez pobierania go.

Składnia

C/C++
#include <iostream>

namespace std
{
    template < class Elem, class Tr >
    class basic_istream
    {
    public:
        int_type peek();
    };
}

Zwracana wartość

Następny znak w sekwencji wejścia. Jeśli nie ma więcej znaków do odczytania lub wewnętrzna flaga stanu jest ustawiona, funkcja zwraca wartość oznaczającą koniec pliku (EOF) i ustawia wewnętrzną flagę stanu wykorzystując poniższe wartości:
FlagaBłąd
eofbitBrak znaku do odczytania (koniec pliku).
failbitBudowa sentry nie powiodła się (na przykład kiedy funkcja good zwracała wartość
false
 przed wywołaniem tej funkcji).
badbitWystąpił błąd w strumieniu (na przykład związany ze sprzętem).

Opis szczegółowy

Funkcja konstruuje i sprawdza poprawność obiektu sentry, a następnie odczytuje następny znak ze strumienia wejściowego bez pobierania go. Jeśli wewnętrzna flaga stanu jest ustawiona przed lub w trakcie wywołania funkcji, zwracaną wartością jest koniec pliku (EOF). Funkcja uzyskuje dostęp do sekwencji wejściowej poprzez stworzenie obiektu sentry (z noskipws ustawionym na wartość
true
). Następnie próbuje odczytać jeden znak z bufora strumienia przez wywołanie funkcji składowej
sgetc()
, a na końcu niszczy obiekt sentry przed zwróceniem wartości. Wywołanie tej funkcji ustawia wartość zwracaną przez funkcję gcount na zero.

Dodatkowe informacje

Niesformatowana funkcja wejścia próbuje uzyskać dostęp do składowej przez zwrócenie
rdbuf()->sgetc()
. W razie niepowodzenia zwraca std::traits_type::eof.

Wyrzucane wyjątki

Jeśli maska wyjątków nie zawiera wartości std::ifstream::goodbit, to funkcja może wyrzucić wyjątek std::ios_base::failure, gdy flaga stanu błędu zawiera wartość inną, niż goodbit.

Przykład

   
C/C++
#include <iostream>    
#include <string>    

int main()
{
    std::cout << "Wprowadz liczbe lub slowo: ";
    char c = std::cin.peek();
    if(( c >= '0' ) &&( c <= '9' ) )
    {
        int n;
        std::cin >> n;
        std::cout << "Wprowadziles liczbe: " << n << '\n';
    }
    else
    {
        std::string str;
        std::getline( std::cin, str );
        std::cout << "Wprowadziles slowo: " << str << '\n';
    }
    return 0;
}
Wyjście:
Wprowadz liczbe lub slowo: foobar
Wprowadziles slowo: foobar

Linki zewnętrzne