Широкие (wide) потоки работают с широкими символами wchar_t (см. п. п. С.2.2.1 в [1]). Если значение si zeof (char) по стандарту равно 1, то размер wchart зависит от реализации (см. п. п. 5.3.3/1 в [1]). Обычно размер sizeof (wchar_t) равен двум (например, в системе Visual C++.NET 2003). Все стандартные классы объектно-ориентированной библиотеки реализованы и в «узком», и в широком виде. В стандартном пространстве имен std прописаны следующие операторы (см. п. 27.2 в [1]):
typedef basic_streambuf<wchar_t> wstreambuf;
typedef basic_istream<wchar_t> wistream;
typedef basic_ostream<wchar_t> wostream;
typedef basic__iostream<wchar_t> wiostream;
typedef basic_stringbuf<wchar_t> wstringbuf;
typedef basic_istringstream<wchar_t> wistringstream;
typedef basic_ostringstream<wchar_t> wostringstream;
typedef basic_stringstream<wchar_t>
wstringstream;
typedef basic_filebuf<wchar_t>
typedef basic_ifstream<wchar_t>
typedef basic_ofstream<wchar_t>
typedef basic_fstream<wchar_t>
wfilebuf; wifstream; wofstream; wf stream;
При этом заголовки нужно подключать те же самые, что и для обычных (узких) потоков. Каждый узкий поток имеет пару — широкий поток. Например, стандартные широкие потоки обозначаются так:
• wciп — объект класса wi stream, соответствующий стандартному вводу (stdiп); по умолчанию связан с клавиатурой;
?i fucautобъект класса wostream, соответствующий стандартному выводу (stdout); по умолчанию связан с экраном;
• wclog — объект класса wostream, соответствующий стандартному выводу для ошибок (stderr); по умолчанию связан с экраном;
• wee г г — объект класса wostream, соответствующий стандартному выводу для ошибок (stderr); по умолчанию связан с экраном; в отличие от wclog он не буферизуется.
Для широких потоков перегружены операции ввода (operator>>) и вывода (operator<<). В стандартных широких потоках для встроенных типов все средства форматирования, все методы работают точно так же, как и для узких. Например, ввод целой переменной и вывод ее в шестнадцатеричном виде выполняется как обычно:
int i; wcin >> i;
wcout << hex << i << endl;
Ввод-вывод булевых значений в виде true и false тоже не отличается от обычного: wcout << boolalpha << true << endl;
Если вас залили соседи то не стоит расстраиваться, вам необходима http://bkrgroup.ru/otsenka-ushcherba-ot-zaliva-kvartiry тут.
Вопросы:
7. Какого типа может быть исключение?
8. Сколько параметров разрешается писать в заголовке секции-ловушки?
9. Какими способами разрешается передавать исключение в блок обработки?
10. Объясните, каким образом преодолеть ограничение на передачу единственного параметра в блок обработки.
11. Почему нельзя выполнять преобразования типов исключений при передаче в секцию-ловушку?
12. В каких случаях преобразование типа все же выполняется?
13. Напишите конструкцию, которая позволяет перехватить любое исключение.
14. Могут ли контролируемые блоки быть вложенными?
15. Объясните термин «раскрутка стека».
16. Зачем нужен «контролируемый блок-функция» и чем он отличается от обычного контролируемого блока?
17. Перечислите возможные способы выхода из блока обработки.
18. Каким образом исключение «передать дальше»?
19. Сколько секций-ловушек должно быть задано в контролируемом блоке?
20. Что такое «спецификация исключений»? |