char и unsigned char
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.90] |
|
|
Правила раздела Visual C++ / MFC / WTL (далее Раздела)
FAQ Раздела
Обновления для FAQ Раздела
Поиск по Разделу
MSDN Library Online| Страницы: (3) 1 2 [3] все ( Перейти к последнему сообщению ) |
char и unsigned char
|
Сообщ.
#31
,
|
|
|
|
Цитата Andy_KZ, 05.08.03, 13:19:49 интересно, многие ли спользуют для строковых данных (нуль-терминированных) тип unsigned char* ?, и для бинарных char*. ? Я же говорю - как только нужно работать со строками, в которых если кирилица. Там желательна явная спецификация, что ты работаешь именно с unsigned char'ами. Иначе могут быть неприятные сайд-эффекты. Цитата Andy_KZ, 05.08.03, 13:19:49 byte " Можно текстовый файл загнать как в char*, так и в unsigned char*. И с бинарником то же самое... " -- исключительно для удобства пользования :char* - текст unsigned char* - бинари и всем все понятно.... Еще понятней - ![]() ![]() <br>typedef unsigned char* byte;<br>byte* ...;<br> Цитата Andy_KZ, 05.08.03, 13:19:49 Не пытаются же запихнуть бинарные данные в класс строки, их же все таки пытаются запихнуть в какойнить аррай... Можно, конечно, все к войд со звездой свести... Но пользоваться потом этим всем... Ты хочешь сказать, что не получится? А в ряде случаев может быть удобно. Например, для организации автоматических буферов болшого размера, которые рисковано размещать на стеке. |
|
Сообщ.
#32
,
|
|
|
|
Цитата byte, 05.08.03, 13:24:21 Я часто использую char* для бинарных файлов... : ![]() А в класс строки ты бинарные данные корректно не запихнешь, т.к. все данные "обрубятся" на первом же NULL-chare .Почему же? string binary_data(buff, buff + buff_len); И всех делов. |
|
Сообщ.
#33
,
|
|
|
|
Цитата byte, 05.08.03, 13:24:21 А в класс строки ты бинарные данные корректно не запихнешь, т.к. все данные "обрубятся" на первом же NULL-chare. std::string не считает символ '\0' концом строки. Длина строки хранится в отдельной переменной. |
|
Сообщ.
#34
,
|
|
|
|
А если я говорю о CString?
|
|
Сообщ.
#35
,
|
|
|
|
Ну так написано же - C String ;D. Зачем хотеть чего-то более?
|
|
Сообщ.
#36
,
|
|
|
|
Цитата Flex Ferrum, 04.08.03, 20:56:42 Стандарт утверждает буквально следующее (п. 3.9.1): Для беззнакового типа все биты используются для представления числа, для знакового - один бит выделяется для знака. Стандарт этого не утверждает. Мои пять копеек ![]() |
|
Сообщ.
#37
,
|
|
|
|
Цитата darkgraf, 06.08.03, 15:43:58 Стандарт этого не утверждает. Мои пять копеек ![]() ??? ??? ??? И в чем же я ошибся? Тогда уж приведи свой вариант перевода. |
|
Сообщ.
#38
,
|
|
|
|
Цитата Flex Ferrum, 04.08.03, 20:56:42 Стандарт утверждает буквально следующее (п. 3.9.1): Для беззнакового типа все биты используются для представления числа, для знакового - один бит выделяется для знака. Цитата Flex Ferrum, 06.08.03, 16:40:12 И в чем же я ошибся? Тогда уж приведи свой вариант перевода. В стандарте ничего не сказано про "один бит выделяется для знака". Конкретно, 3.9.1/1 говорит, что "все биты всех char типов участвуют в образовании значения", и "все битовые паттерны unsigned char являются числами". К сожалению, против "один бит выделяется для знака" работает 3.9.1/7: "Представление целочисленных типов должно использовать чистую двоичную систему [Пример: Стандарт допускает использование дополнение до двух, до одного и выделенный бит для знака]" |
|
Сообщ.
#39
,
|
|
|
|
Цитата darkgraf, 06.08.03, 17:06:08 В стандарте ничего не сказано про "один бит выделяется для знака". Конкретно, 3.9.1/1 говорит, что "все биты всех char типов участвуют в образовании значения", и "все битовые паттерны unsigned char являются числами". В этом смысле да - мой вариант не совсем корректен. |