
Pre-defined stream
Controls input from a stream buffer associated with the object stdin declared in <cstdio>.
None
#include <iostream> extern wistream wcin; wistream wcin;
The object wcin controls input from a stream buffer associated with the object stdin declared in <cstdio>. By default the standard C and C++ streams are synchronized, but performance improvement can be achieved by using the ios_base member function synch_with_stdio to desynchronize them.
After the object wcin is initialized, wcin.tie() returns &wcout, which implies that wcin and wcout are synchronized. wcin uses the locale codecvt facet to convert the tiny characters extracted from stdin to the wide characters stored in the wcin buffer.
//
// wcin example #1
//
#include <iostream>
void main ( )
{
using namespace std;
int i;
float f;
wchar_t c;
//read an integer, a float and a wide character from stdin
wcin >> i >> f >> c;
// output i, f and c to stdout
wcout << i << endl << f << endl << c << endl;
}
//
// wcin example #2
//
#include <iostream>
void main ( )
{
using namespace std;
wchar_t p[50];
// remove all the white spaces
wcin >> ws;
// read characters from stdin until a newline
// or 49 characters have been read
wcin.getline(p,50);
// output the result to stdout
wcout << p;
}
When inputting " Grendel the monster" (newline) in the previous test, the output is: "Grendel the monster". The manipulator ws removes spaces.
basic_istream(3C++), iostream(3C++), basic_filebuf(3C++), cin(3C++), cout(3C++), cerr(3C++), clog(3C++), wcout(3C++), wcerr(3C++), wclog(3C++), ios_base(3C++), basic_ios(3C++)
Working Paper for Draft Proposed International Standard for Information Systems--Programming Language C++, Section 27.3.2
ANSI X3J16/ISO WG21 Joint C++ Committee