Namespaces
Variants

std:: cin, std:: wcin

From cppreference.net
< cpp ‎ | io
Определено в заголовочном файле <iostream>
extern std:: istream cin ;
(1)
extern std:: wistream wcin ;
(2)

Глобальные объекты std::cin и std::wcin управляют вводом из буфера потока реализационно-определенного типа (производного от std::streambuf ), ассоциированного со стандартным потоком ввода C stdin .

Эти объекты гарантированно инициализируются во время или до первого создания объекта типа std::ios_base::Init и доступны для использования в конструкторах и деструкторах статических объектов с упорядоченной инициализацией (при условии, что <iostream> включен до определения объекта).

Если не была выполнена команда sync_with_stdio ( false ) , безопасно обращаться к этим объектам из нескольких потоков как для форматированного, так и для неформатированного ввода.

После инициализации:

1) std :: cin . tie() возвращает & std:: cout . Это означает, что любая операция ввода на std::cin принудительно вызывает std:: cout . flush() если есть символы, ожидающие вывода.
2) std :: wcin . tie ( ) возвращает & std:: wcout . Это означает, что любая операция ввода на std::wcin принудительно вызывает std:: wcout . flush ( ) если есть символы, ожидающие вывода.

Примечания

Буква «c» в названии означает «character» ( stroustrup.com FAQ ); cin означает «character input», а wcin означает «wide character input».

Пример

#include <iostream>
struct Foo
{
    int n;
    Foo()
    {
        std::cout << "Введите n: "; // no flush needed
        std::cin >> n;
    }
};
Foo f; // static object
int main()
{
    std::cout << "f.n равно " << f.n << '\n';
}

Возможный вывод:

Enter n: 10
f.n is 10

Смотрите также

инициализирует объекты стандартных потоков
(публичный класс-член std::ios_base )
записывает в стандартный поток вывода C stdout
(глобальный объект)
выражение типа FILE * связанное с входным потоком
выражение типа FILE * связанное с выходным потоком
выражение типа FILE * связанное с потоком вывода ошибок
(макроконстанта)