На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
Страницы: (3) 1 2 [3]  все  ( Перейти к последнему сообщению )  
> char и unsigned char
    Цитата 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* - бинари
    и всем все понятно....

    Еще понятней -
    ExpandedWrap disabled
      <br>typedef unsigned char* byte;<br>byte* ...;<br>

    Цитата Andy_KZ, 05.08.03, 13:19:49

    Не пытаются же запихнуть бинарные данные в класс строки, их же все таки пытаются запихнуть в какойнить аррай...


    Можно, конечно, все к войд со звездой свести... Но пользоваться потом этим всем...

    Ты хочешь сказать, что не получится? А в ряде случаев может быть удобно. Например, для организации автоматических буферов болшого размера, которые рисковано размещать на стеке.
      Цитата byte, 05.08.03, 13:24:21
      Я часто использую char* для бинарных файлов... ::)
      А в класс строки ты бинарные данные корректно не запихнешь, т.к. все данные "обрубятся" на первом же NULL-chare ;).

      Почему же?
      string binary_data(buff, buff + buff_len);
      И всех делов.
        Цитата byte, 05.08.03, 13:24:21

        А в класс строки ты бинарные данные корректно не запихнешь, т.к. все данные "обрубятся" на первом же NULL-chare.

        std::string не считает символ '\0' концом строки. Длина строки хранится в отдельной переменной.
          А если я говорю о CString? ;)
            Ну так написано же - C String  ;D. Зачем хотеть чего-то более?
              Цитата Flex Ferrum, 04.08.03, 20:56:42

              Стандарт утверждает буквально следующее (п. 3.9.1):
              Для беззнакового типа все биты используются для представления числа, для знакового - один бит выделяется для знака.


              Стандарт этого не утверждает. Мои пять копеек :)

                Цитата darkgraf, 06.08.03, 15:43:58

                Стандарт этого не утверждает. Мои пять копеек :)

                ??? ??? ???
                И в чем же я ошибся? Тогда уж приведи свой вариант перевода.
                  Цитата 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:
                  "Представление целочисленных типов должно использовать чистую двоичную систему [Пример: Стандарт допускает использование дополнение до двух, до одного и выделенный бит для знака]"
                    Цитата darkgraf, 06.08.03, 17:06:08

                    В стандарте ничего не сказано про "один бит выделяется для знака".
                    Конкретно, 3.9.1/1 говорит, что "все биты всех char типов участвуют в образовании значения", и "все битовые паттерны unsigned char являются числами".

                    В этом смысле да - мой вариант не совсем корректен.
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:
                    Страницы: (3) 1 2 [3]  все


                    Рейтинг@Mail.ru
                    [ Script execution time: 0.0803 ]   [ 16 queries used ]   [ Generated: 27.06.26, 14:45 GMT ]