Потокове виведення досягається при використанні змінних класів ostream або istream. Потокове виведення може застосовуватися з одним із визначених вихідних потоків або з вихідним потоком, що був визначений користувачем. Є такі визначені вихідні потоки:
cout – ostream, зв’язаний зі стандартним пристроєм виведення;
cerr – ostream, зв’язаний зі стандартним пристроєм повідомлення про помилки.
4. Операція вставки
Операція вставки записує послідовність символів у зазначений потік. Це перевантажена операція <<. Операція вставки визначена для всіх простих типів і покажчиків на char та void.
cout << “Wow! This is neat!n”;
cerr << “Bad operand: “ << op <<'n';
Операція вставки може бути перевантажена для класів.
class Phone
{
const int area, exchange, line;
// ...
friend ostream& operator<<(ostream&, const Phone&);
};
ostream& operator<<(ostream& os, const Phone& p)
{
os <<'('<< p.area<<')'<<p.exchange<<'-'<<p.line;
return os; // повинна повертати ostream&
}
cout<<"Home number "<<home<<'n';
ostream& put(char);
– записує окремий символ у потік.
cout.put('n'); // те ж, що й cout << 'n';
cout.put('!').put(bell);
ostream& write(const char* buf, int count);
ostream& write(const unsigned char* buf, int count);
– записує в потік зазначену кількість символів із буфера, на який указує buf.
const int bufSize = 2048;
char buf[bufSize];
// ...
cout.write(buf, sizeof(buf));
ostream& flush();
ostream& flush(ostream&);
– викликає запис вмісту потоку. Перша функція – це функція-член класу, а друга – маніпулятор.
cout << “What's your name?n”;
cout.flush();
// ...
cout <<”Where do you live?n”<<flush;
ostream& seekp(streampos, seek_dir = ios::beg);
– переміщає позицію покажчика запису у файлі. Streampos – це значення цілого типу, а seek_dir – це точка відліку, від якої відраховується значення нової позиції: початок файлу, поточна позиція або кінець файлу.
file.seekp(i * 100);
file.seekp(100, ios::cur); // вперед на 100 байт
file.seekp(0, ios::end); // останній символ
streampos tellp();
– повертає поточну позицію покажчика запису у файлі потоку в байтах. Streampos – це значення цілого типу.
streampos mark = myFile.tellp();
ostream& endl(ostream&);
– вставляє символ 'n' і виконує flush().
cout << “Hello, world!” << endl;