Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? - C++
Вопрос такой, почему в методе setnamedisc нужно использовать char *s для установки значения, а при возвращении значения в методе...

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

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

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

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

2
newbie666
Заблокирован
13.04.2014, 23:37 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от mariko_11 Посмотреть сообщение
Почему ?
ну так сделали ёлки палки, для меня тоже непонятно, почему там char, а не byte ( unsigned char), но всё же - ты ж этой функцией записываешь побайтно байты, а байты - это и есть unsigned char
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
13.04.2014, 23:41 #3
Во-первых не char*, а const char*, а во-вторых, write пишет байты, а не объекты и ему глубоко плевать что ему передали, для него важно знать откуда начинать брать эти самые байты(const char*) и сколько штук их взять (streamsize)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2014, 23:41
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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