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

Запись в ofstream - разобрать код - C++

Восстановить пароль Регистрация
 
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.07.2014, 12:48     Запись в ofstream - разобрать код #1
Доброго времени суток
объясните как это работает?
C++
1
2
3
4
5
6
7
8
char msg[255];
//что то записали в msg не важно как, суть в том что туда писали без символа \0, 
//и данных может быть меньше 255(больше 255 не может быть),
// так же знаем сколько записали iMsgSize
ofstream File;
File.open("bla bla");
File<<msg;
File.flush();
сколько символов запишется? до первого поппавшегося \0 в памяти начиная от msg или как?

Добавлено через 1 минуту
и да какой метод будет вызван? этот?
C++
1
ostream& operator<< (void* val);
Добавлено через 2 минуты
и еще вдогонку, чтобы писать конкретное кол-во символов как проще поступить?
C++
1
2
3
std::string sMsg;
sMsg.assign(msg, msg+iMsgSize);
File<<sMsg;
есть еще варианты?

Добавлено через 2 минуты
черт только что нашел
C++
1
File.write(msg, iMsgSize);
но буду рад предложениям
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2014, 12:48     Запись в ofstream - разобрать код
Посмотрите здесь:

сокращенная запись ifstream и ofstream C++
Разобрать код с++ C++
C++ Разобрать код на с++
C++ файлы ifstream/ofstream запись класса C++
необходимо разобрать код в с++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
23.07.2014, 12:50     Запись в ofstream - разобрать код #2
Цитата Сообщение от aLarman Посмотреть сообщение
сколько символов запишется? до первого поппавшегося \0 в памяти начиная от msg или как?
На то, чтобы взять и попробовать времени ушло бы меньше чем на написание этого поста, лол
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
23.07.2014, 12:56     Запись в ofstream - разобрать код #3
Вместо слов:
C++
1
2
3
4
  template<typename _CharT, typename _Traits>
    class basic_ofstream : public basic_ostream<_CharT,_Traits>
    {
        ...
Цитата Сообщение от aLarman Посмотреть сообщение
черт только что нашел
Есть различие между режимами записи. operator<< и write предназначенны для различных режимов работы с файлом.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.07.2014, 13:02  [ТС]     Запись в ofstream - разобрать код #4
Ilot, и что это?

Добавлено через 19 секунд

Не по теме:

Voivoid, если сказать нечего, лучше промолчать



Добавлено через 2 минуты
Цитата Сообщение от Ilot Посмотреть сообщение
operator<< и write предназначенны для различных режимов работы с файлом.
вот это уже другой разговор, где можно об этом почитать?
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
23.07.2014, 13:04     Запись в ofstream - разобрать код #5
Цитата Сообщение от aLarman Посмотреть сообщение
Ilot, и что это?
Это значит поведение operator << для файлового потока идентично поведению для стандартного потока вывода, читай консоль. Ну а с консолью вы же работать умеете?...
Цитата Сообщение от aLarman Посмотреть сообщение
вот это уже другой разговор, где можно об этом почитать?
В любой книге. Хоть Лафоре, хоть Прата...
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.07.2014, 13:07  [ТС]     Запись в ofstream - разобрать код #6
Цитата Сообщение от Ilot Посмотреть сообщение
Ну а с консолью вы же работать умеете?...
а все ясно

Добавлено через 21 секунду
Цитата Сообщение от Ilot Посмотреть сообщение
operator<< и write предназначенны для различных режимов работы с файлом.
а в 2х словах можно?
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
23.07.2014, 13:23     Запись в ofstream - разобрать код #7
Цитата Сообщение от aLarman Посмотреть сообщение
а в 2х словах можно?
Есть два режима работы текстовой и бинарный. В первом случае запись идет посимвольно во втором побитно. Например,
C++
1
2
3
4
int val = 123;
fout << val;
...
fout.write(static_cast<char>(&val), sizeof(val));
Первая команда поместит в файл:
0x31
0x32
0x33
Вторая:
0x00 00 00 7B
P.S. Надеюсь нигде не приврал...
Alex5
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,546
23.07.2014, 13:57     Запись в ofstream - разобрать код #8
Цитата Сообщение от Ilot Посмотреть сообщение
Вторая:
0x00 00 00 7B
Возможно, зависит от операционной системы. В Windows байты хранятся в обратном порядке: 7B 00 00 00.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.07.2014, 15:53     Запись в ofstream - разобрать код #9
Цитата Сообщение от Alex5 Посмотреть сообщение
В Windows байты хранятся в обратном порядке: 7B 00 00 00.
в Window байты не хранятся. и порядок байт не зависит от ОС.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
23.07.2014, 16:06     Запись в ofstream - разобрать код #10
Цитата Сообщение от Jupiter Посмотреть сообщение
и порядок байт не зависит от ОС.
зависит от процессора
но поскольку винда чаще всего на Intel то можно сказать и винда хранит

Добавлено через 2 минуты
Цитата Сообщение от Alex5 Посмотреть сообщение
В Windows байты хранятся в обратном порядке: 7B 00 00 00.
как раз в правильном порядке
младший бит по младшему адресу в отличии допустим от мотороллы
и для евреев и арабов будет нормальная запись, они читают справа налево, а для нас кажется перевернутой
gru74ik
Модератор
 Аватар для gru74ik
2999 / 1312 / 164
Регистрация: 20.02.2013
Сообщений: 3,742
Записей в блоге: 15
23.07.2014, 18:55     Запись в ofstream - разобрать код #11
Цитата Сообщение от ValeryS Посмотреть сообщение
винда чаще всего на Intel
Лолшто? ))) Какая связь между процом и ОС? ИМхо, кто на чё фапает, тот то и ставит (проц и ОС).
castaway
23.07.2014, 19:01
  #12

Не по теме:

Честно говоря, не знал что в архитектурах процессоров существует такое понятие как порядок бит.

ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
23.07.2014, 19:31     Запись в ofstream - разобрать код #13
Цитата Сообщение от gru74ik Посмотреть сообщение
Какая связь между процом и ОС?
Вообще то прямая, ОС пишут под процессор
ты видел чтобы Винду портировали под ARM или Motorola?
я нет

Добавлено через 2 минуты

Не по теме:

castaway,
да обширился я Байт конечно
просто когда пишу постоянно путаю слова, когда работаю нет
могу запросто написать старший байт в бите

Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.07.2014, 23:05     Запись в ofstream - разобрать код #14
Цитата Сообщение от ValeryS Посмотреть сообщение
но поскольку винда чаще всего на Intel то можно сказать и винда хранит
не пиши чушь!

Цитата Сообщение от ValeryS Посмотреть сообщение
в отличии допустим от мотороллы
при чем тут моторолла? это вообще другая аппаратная платформа и естественно что все там по-другому

Добавлено через 56 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
ты видел чтобы Винду портировали под ARM или Motorola?
я нет
наличие/отсутствие винды не показатель того какой должен быть порядок байт
gru74ik
Модератор
 Аватар для gru74ik
2999 / 1312 / 164
Регистрация: 20.02.2013
Сообщений: 3,742
Записей в блоге: 15
24.07.2014, 06:52     Запись в ofstream - разобрать код #15
Цитата Сообщение от ValeryS Посмотреть сообщение
Вообще то прямая, ОС пишут под процессор
ты видел чтобы Винду портировали под ARM или Motorola?
я нет
ОС может и пишут под процы - спорить не буду, тут я не спец. По крайней мере разные сборки убунты под AMD и Intel твои слова подтверждают. Но вот винде абсолютно пофигу на компе с каким процом она будет стоять. И стоящие в соседних комнатах у меня дома компы с процом Intel (у сына) и AMD (у супруги) этому свидетели. На обоих одна и та же винда.

Итак, попробуем ещё раз. Какая связь между виндой и процессором компьютера, на который она будет установлена?
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
24.07.2014, 08:31     Запись в ofstream - разобрать код #16
Цитата Сообщение от gru74ik Посмотреть сообщение
у меня дома компы с процом Intel (у сына) и AMD
AMD Intel-совместимый, по крайней мере с точки зрения команд
правильней сказать совместимы с x86
http://ru.wikipedia.org/wiki/X86
поскольку Intel выпускает еще кучу процессоров и микроконтроллеров
Цитата Сообщение от gru74ik Посмотреть сообщение
Какая связь между виндой и процессором компьютера,
Винда разрабатывалась под платформу IBM PC на которой подразумевается использования х86 процессоров
Которые поддерживают little-endian
http://ru.wikipedia.org/wiki/Порядок_байтов
по этому можно сказать, с большой натяжкой,
Цитата Сообщение от ValeryS Посмотреть сообщение
но поскольку винда чаще всего на Intel то можно сказать и винда хранит
Так понятней?
Цитата Сообщение от Jupiter Посмотреть сообщение
это вообще другая аппаратная платформа и естественно что все там по-другому
Я где то утверждал обратное?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.07.2014, 11:14     Запись в ofstream - разобрать код #17
Цитата Сообщение от gru74ik Посмотреть сообщение
По крайней мере разные сборки убунты под AMD и Intel твои слова подтверждают
just read

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
Винда разрабатывалась под платформу IBM PC на которой подразумевается использования х86 процессоров
Которые поддерживают little-endian
http://ru.wikipedia.org/wiki/Порядок_байтов
по этому можно сказать, с большой натяжкой,
но поскольку винда чаще всего на Intel то можно сказать и винда хранит
никаких натяжек, так говорить нельзя, это разные и независимые вещи
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 13:22     Запись в ofstream - разобрать код
Еще ссылки по теме:

Разобрать код по алгоритму C++
Std::ofstream запись и чтение переменных в бинарный файл C++
Разобрать код! C++

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

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
 Аватар для gru74ik
2999 / 1312 / 164
Регистрация: 20.02.2013
Сообщений: 3,742
Записей в блоге: 15
24.07.2014, 13:22     Запись в ofstream - разобрать код #18
Цитата Сообщение от Jupiter Посмотреть сообщение
Тем более.
Yandex
Объявления
24.07.2014, 13:22     Запись в ofstream - разобрать код
Ответ Создать тему
Опции темы

Текущее время: 01:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru