Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mariko_11
2 / 2 / 1
Регистрация: 11.03.2013
Сообщений: 64
#1

Почему char * ? Попахивает извращением - C++

13.04.2014, 23:32. Просмотров 237. Ответов 2
Метки нет (Все метки)

Речь идёт о функции-элементе write класса ostream. Почему там указатель на char в качестве первого параметра? В результате приходится приводить к этому типу адреса любых объектов, которые записываются в файл. Это же извращение. Есть способы обойти это - например, сделать параметр шаблона и заменить им char. Но почему-то реализован вот этот странноватый вариант. Почему ?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 23:32     Почему char * ? Попахивает извращением
Посмотрите здесь:

Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ? - C++
Ну собственно сабж... std::fstream fs; fs.write((char*)..) В случае бинарного потока я допустим пишу байты функцией write, как...

Почему не выдает значения char с таблицы? - C++
Почему не выдает значения char с таблицы? #include <iostream> #include <windows.h> #include <conio.h> #include <clocale> using...

Почему sizeof массива char равно 4? - C++
Почему sizeof ch3 равно 4? #include <iostream> #include <cstring> int main() { char ch1 = "Cpp"; char ch2 = {'C',...

Почему два char нельзя сравнивать так ==? - C++
Почему два char нельзя сравнивать так ==?

почему часть текста исчезает ? переменная char и цикл - C++
вот скрипт , которая пишет текст сверху вниз . но часть текста исчезает . я так понял , переменная может внести в себя весь текст , так как...

Почему тип char не может делать вот так += - C++
Я хочу из входного текста получить другой текст. Например: ТЕКСТ, а я хочу получить ТСКЕТ то есть предложение или слово только...

cin получил char вместо double и while зациклился. Почему? - C++
Привет! Решил задачу из книги Шилдта. "Годы Юпитера в Земные" Захотел проверить, что произойдет, если пользователь ошибется и вместо...

Специализация шаблона для char * (рабочий код, но непонятно почему) - C++
Явное определение специализации – это такое определение, в котором за ключевым словом template следует пара угловых скобок <>, а за ними...

Почему при изменении литерала const char* программа падает? - C++
точнее литерала. ладно, если бы выходил за пределы

Почему при выводе в поток char* выводится весь массив символов? - C++
я немогу вот в чем разобраться есть : int main() { char v = "Fdasda"; char *p=v; cout << "\np=" << p; cout << "\n*p=" <<*p; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
13.04.2014, 23:37     Почему char * ? Попахивает извращением #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от mariko_11 Посмотреть сообщение
Почему ?
ну так сделали ёлки палки, для меня тоже непонятно, почему там char, а не byte ( unsigned char), но всё же - ты ж этой функцией записываешь побайтно байты, а байты - это и есть unsigned char
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
13.04.2014, 23:41     Почему char * ? Попахивает извращением #3
Во-первых не char*, а const char*, а во-вторых, write пишет байты, а не объекты и ему глубоко плевать что ему передали, для него важно знать откуда начинать брать эти самые байты(const char*) и сколько штук их взять (streamsize)
Yandex
Объявления
13.04.2014, 23:41     Почему char * ? Попахивает извращением
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru