Потокове виведення

Потокове виведення досягається при використанні змінних класів 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;