powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / вывод в файлы в двоичном режиме, cpp- шные классы +
25 сообщений из 36, страница 1 из 2
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971099
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в принципе в файле получается два целых, но не нравится
необходимость мои массивы преобразовывать к указателю на символы.
Похоже я не могу взять правильный класс?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	ofstream fout("1.bin", ios::binary);
        ....

        int y[2] = {1,2};
        char * py =  (char *)y;

        fout.write(py, sizeof(int)*2);
 
        fout.close();
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971100
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всю жизнь делал через FILE *, а тут приспичило по сиплюсовски.
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971101
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще не пятница...
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971108
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizне нравится необходимость мои массивы преобразовывать к указателю на символы.


Нет, всё верно, преобразование заложено by design.
Вместо void* они просто использовали char*.
Оба байт -- так что всё едино.
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971121
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
1.
спасибо, полегчало на душе
(а то я уже начал склонятся к состоянию
стою на асфальте я в лыжи обутый...).
2
тю, а перегрузок
write (int * pint, size_t numberOfElementsOfIntArraY );
нету?
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971143
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
	strstream buf((char*)y, sizeof y, 0);
	fout << buf;
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971162
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не, что то бред получается (
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971184
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимарглне, что то бред получается (
Да, нолик лишний )
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971189
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz,

Напишите простую обертку, чтобы записывать бинарное представление переменных в поток не морочась преобразованиями.
Типа какого (только отладить)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
template <typename T>
struct as_bin_impl {
  as_bin_impl(const T& val)
    : m_val(val) 
  {
  }
  template <typename Stream> friend Stream& operator<<(Stream& stream, const as_bin_impl& val) {
    stream.write((const char*)&val.m_val, sizeof(val.m_val));
    return stream;
  }
  private:
  const T& m_val;
};

template <typename T> as_bin_impl<T> as_bin(const T& val)
{
    return as_bin_impl<T>(val);
}


...

	ofstream fout("1.bin", ios::binary);
        ....

        int y[2] = {1,2};

        fout << as_bin(y);
 
        fout.close();



ЗЫ. А может такое есть и в стандартной библиотеке, не в курсе.
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971279
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz.).
2
тю, а перегрузок
write (int * pint, size_t numberOfElementsOfIntArraY );
нету?

нету, мы же не на Java пишем....
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971314
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskytchingiz,

Напишите простую обертку, чтобы записывать бинарное представление переменных в поток не морочась преобразованиями.
Типа какого (только отладить)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
template <typename T>
struct as_bin_impl {
  as_bin_impl(const T& val)
    : m_val(val) 
  {
  }
  template <typename Stream> friend Stream& operator<<(Stream& stream, const as_bin_impl& val) {
    stream.write((const char*)&val.m_val, sizeof(val.m_val));
    return stream;
  }
  private:
  const T& m_val;
};

template <typename T> as_bin_impl<T> as_bin(const T& val)
{
    return as_bin_impl<T>(val);
}


...

	ofstream fout("1.bin", ios::binary);
        ....

        int y[2] = {1,2};

        fout << as_bin(y);
 
        fout.close();



ЗЫ. А может такое есть и в стандартной библиотеке, не в курсе.

Код: plaintext
1.
2.
3.
4.
FILE f* = fopen("1.bin", "w");
int y[] = {1,2};
fwrite(y, 1, sizeof(y), f);
fclose(f);



Вывод: С++ намного проше и удобнее чем Си.
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971644
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White_Owl++
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971767
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Код: plaintext
1.
2.
3.
4.
FILE f* = fopen("1.bin", "w");
int y[] = {1,2};
fwrite(y, 1, sizeof(y), f);
fclose(f);

Вывод: С++ намного проше и удобнее чем Си.ошибочка в код закралась, правда ;)
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971809
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВывод: С++ намного проше и удобнее чем Си.
Согласен.
Вот это
Код: plaintext
1.
fout << as_bin(y);


намного проще, понятнее и удобнее, чем
Код: plaintext
1.
fwrite(y, 1, sizeof(y), f);


Особенно, если учесть что в реальной программе должна быть обработка ошибок, и в С надо каждый write оборачивать в эту обработку, а в С++ достаточно в конце серии write один раз проверить ошибку.

egorychошибочка в код закралась, правда ;)
А в чем ошибка?
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971816
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyА в чем ошибка?есть уверенность, что sizeof( int ) == 1? у меня - нет ))
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971829
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychAnatoly MoskovskyА в чем ошибка?есть уверенность, что sizeof( int ) == 1? у меня - нет ))
А там не size а кол-во.
Главное чтобы 2 и 3 аргументы при перемножении давали размер записываемого буфера.
В данном случае это так.
Конечно, обычно принято вначале указывать размер элемента, а потом количество, как это описано в прототипе функции, но от перемены мест произведение не меняется.
Меняется только код ошибки. Но если проверять на != 0 то и это не имеет значения.
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971837
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyне имеет значения.
Но, согласен, данный пример демонстрирует отличную читабельность кода на С
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971871
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyНо, согласен, данный пример демонстрирует отличную читабельность кода на С да, я именно это и имел ввиду ))
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971969
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На гипотетическом json-dsl

Код: javascript
1.
2.
3.
4.
5.
{
    "1.bin": {
		"write": [1,2]
	}
}
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971978
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Плохой АПИ. Не хватает идемпотентности. Декларативный язык все-таки
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38971985
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед DSL не ставится задач идемпотентностей. Это первое.

И второе... я-же не раскрыл тайну свойства "write"... возможно оно
не меняет вселенную а создаёт новую....
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38972044
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПеред DSL не ставится задач идемпотентностей.
Перед DSL не ставится никаких задач - это просто аббревиатура ))
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38972046
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох уж эти пятничные дискурсы...
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38972054
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОх уж эти пятничные дискурсы...это вам не простые числа в системе счисления Фибоначчи находить, это вечные ценности ;)
...
Рейтинг: 0 / 0
вывод в файлы в двоичном режиме, cpp- шные классы +
    #38972060
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я вить систему счисления Фибоначчи пилил. Мдя.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / вывод в файлы в двоичном режиме, cpp- шные классы +
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]