Lect12
.pdf"Разборполётов"
Программа№1
Student size is 50
Student read from file (50bytes):
Программа№2
Student size is 52
Student read from file (50bytes):
Проблемавыравнивания
Программачтения:
Проблемавыравнивания
Программазаписи:
Проблемавыравнивания
Приразличныхнастройках компилятораадресачленовструктур выравниваютсяпо-разному:на границу1байта,2-х,4-хит.д.
Поумолчаниювыравнивание выполняетсянаграницуслова:4байта
Выравниваниевлияетнаадресполя структуры!
Проблемавыравнивания
Структура |
Адреспри |
Адреспри |
|
struct student { |
/Zp1 |
/Zp4 |
|
0 |
0 |
||
int nz; |
|||
char name[40]; |
4 |
4 |
|
unsigned short course; |
44 |
44 |
|
int numNeud; |
46 |
48 |
|
}; |
|
|
|
|
|
|
Важно!
Программы,работающиес двоичнымифайламии выполняющиечтение/запись структурдолжныбыть
откомпилированысодинаковым режимомвыравнивания!
Работасwide char черезпотоки
Всовременныхпрограммахтребуется поддержканациональныхкодировок.
Наиболееправильныйвариант поддержкинациональныхкодировок– этоиспользованиемногобайтных наборовсимволов.
ВC++ дляподдержкиразныхнаборов символовиспользуетсятипwchar_t – типchar с"широкими"символами
Работасwide char черезпотоки
Дляподдержкиwide char надо использоватьальтернативныеклассы потоковиобъекты:
◦Объектыwcin, wcout, wcerr, wclog
◦Классы:wistream, wostream, wiostream, wios, wifstream, wofstream, wstrstream
Простоеправило:символьныйтип char – обычныйкласс/объектпотока, символьныйтипwchar_t – потокс'w'.
Спасибозавнимание!