std::cin, std::wcin - cppreference.com (original) (raw)

| Defined in header | | | | --------------------------------------------------------------------------------------------------------- | --- | | | extern std::istream cin; | (1) | | | extern std::wistream wcin; | (2) | |

The global objects std::cin and std::wcin control input from a stream buffer of implementation-defined type (derived from std::streambuf), associated with the standard C input stream stdin.

These objects are guaranteed to be initialized during or before the first time an object of type std::ios_base::Init is constructed and are available for use in the constructors and destructors of static objects with ordered initialization (as long as is included before the object is defined).

Unless sync_with_stdio(false) has been issued, it is safe to concurrently access these objects from multiple threads for both formatted and unformatted input.

Once initialized:

  1. std::cin.tie() returns &std::cout. This means that any input operation on std::cin forces a call to std::cout.flush() if any characters are pending for output..

  2. std::wcin.tie() returns &std::wcout. This means that any input operation on std::wcin forces a call to std::wcout.flush() if any characters are pending for output.

[edit] Notes

The “c” in the name refers to “character” (stroustrup.com FAQ); cin means “character input” and wcin means “wide character input”.

[edit] Example

#include   struct Foo { int n; Foo() { std::cout << "Enter n: "; // no flush needed std::cin >> n; } };   Foo f; // static object   int main() { std::cout << "f.n is " << f.n << '\n'; }

Possible output:

[edit] See also

| | initializes standard stream objects (public member class of std::ios_base) [edit] | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | writes to the standard C output stream stdout(global object)[edit] | | | expression of type FILE* associated with the input streamexpression of type FILE* associated with the output streamexpression of type FILE* associated with the error output stream (macro constant) [edit] |