powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / что делает код???
18 сообщений из 18, страница 1 из 1
что делает код???
    #34218642
я_Link_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хелп ми, плиз! что делает код:

Код: plaintext
1.
2.
3.
fstream in((sr.Name).c_str(),ios::in | ios::binary);
                        in.read((char *)(s1+end),sr.Size);
                        end += (sr.Size/ 16 );
                        in.~fstream();

как именно происходит считывание, если s1-класс с 3мя целыми полями, sr.Name - соответственно, файл...
блин, ну не догоняет моё си-шарпное мышления такую тяжеловесную конструкцию ... ;(((
...
Рейтинг: 0 / 0
что делает код???
    #34218715
я - Link_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди!!!! вы еще живы???
...
Рейтинг: 0 / 0
что делает код???
    #34218752
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я_Link_a яa> fstream in((sr.Name).c_str(),ios::in | ios::binary);
яa> in.read((char *)(s1+end),sr.Size);
яa> end += (sr.Size/16);
яa> in.~fstream();

яa> как именно происходит считывание
а что именно интересует ? как sr.Size байт читаются из файла ? или как они записываются по адресу (s1+end) ?

Замечание: 16 - тут некорректно, разумнее написать sizeof(*s1)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
что делает код???
    #34218754
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
// Открывают поток на чтение бинарных данных
fstream in((sr.Name).c_str(),ios::in | ios::binary);

// Читают из потока в адрес буфера s1, сдвинутым на end байт от начала буфера, 
// блок размером sr.Size, 
in.read((char *)(s1+end),sr.Size);

// Увеличивают этот end на sr.Size/16
 end += (sr.Size/ 16 );

// Прибивают поток
in.~fstream();
...
Рейтинг: 0 / 0
что делает код???
    #34218757
IMil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я_Link_aхелп ми, плиз! что делает код:

Код: plaintext
1.
2.
3.
fstream in((sr.Name).c_str(),ios::in | ios::binary);
                        in.read((char *)(s1+end),sr.Size);
                        end += (sr.Size/ 16 );
                        in.~fstream();

как именно происходит считывание, если s1-класс с 3мя целыми полями, sr.Name - соответственно, файл...
блин, ну не догоняет моё си-шарпное мышления такую тяжеловесную конструкцию ... ;(((
Этот код убивает мозг программиста, пытающегося в нем разобраться и делает невозможным перенос программы на системы с другим размером базовых типов.
Наверное, s1 - все же не один объект, а массив объектов? Если так, то здесь из файла читаются "сырые" данные и записываются поверх массива. Если ранее эти данные были взяты из такого же массива, то все байты встанут на свои места.
...
Рейтинг: 0 / 0
что делает код???
    #34218776
вообще не понял зачем этот ахтунг:

Код: plaintext
in.~fstream();

в результате деструктор вызовется два раза, что не есть гуд
...
Рейтинг: 0 / 0
что делает код???
    #34218798
я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
я
Гость
а зачем поток прибивать явным вызовом деструктора? нормально то нельзя его закрыть через close?
...
Рейтинг: 0 / 0
что делает код???
    #34218803
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeishe
Код: plaintext
1.
// Читают из потока в адрес буфера s1, сдвинутым на end байт от начала буфера, 

на end элементов типа данных указателя s1.
...
Рейтинг: 0 / 0
что делает код???
    #34218840
я - Link_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пасибки огромное !!! ))) что за ахтунги - я тоже не понимаю - программу не я писала, просто код перевожу с С++ Buildera на C# с оптимизацией.
Еще раз сенкс! :)
...
Рейтинг: 0 / 0
что делает код???
    #34218873
я - Link_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя стоп - если класс S1 состоит из 3 полей след.типов: __int64, int, int - то как производится ПРИСВОЕНИЕ ПОЛЯМ КЛАССА СЧИТАННЫХ БАЙТ? Где это описывается?
...
Рейтинг: 0 / 0
что делает код???
    #34218893
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я - Link_aхотя стоп - если класс S1 состоит из 3 полей след.типов: __int64, int, int - то как производится ПРИСВОЕНИЕ ПОЛЯМ КЛАССА СЧИТАННЫХ БАЙТ? Где это описывается?

Функция реад, читает в переданный по указателю буфер. Ты по указателю передаешь объекты.
...
Рейтинг: 0 / 0
что делает код???
    #34218951
я - Link_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ааа, т.е. в потоке считывается int64 (8 byte), затем int(4 byte) и int(4 byte) и присваиваются полям, в случае нормальной работы, а при ошибке - данные "не ложатся ))"... более-менее понятненько....
...
Рейтинг: 0 / 0
что делает код???
    #34218981
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считываются по байтику и кладутся по очереди в память которую ты указал. Или считывается блок и накладывается на память, которая начинается с указателя на который ты указал. Как угодно. Когда ты обращаешься к свойствам класса, то ты читаешь из памяти, которая выделена для этих свойств.

Присваивание же полям, как я это понимаю, это считывание по размеру каждого из полей в само поле, а не классом целиком.

Разница: если записал в файл из объекта, где поля распологаются с "дырками", а прочитал в объект "без дырок", то поля друг на друга не попадут.
...
Рейтинг: 0 / 0
что делает код???
    #34218988
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если __int64, int, int, то дырок нет.
...
Рейтинг: 0 / 0
что делает код???
    #34219146
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoесли __int64, int, int, то дырок нет.

Я в общем.

А на счет дырок. Надо знать параметр выравнивания. Возможно, двойное слово и максимальный.
...
Рейтинг: 0 / 0
что делает код???
    #34219823
я - Link_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
теперь я все понял а . пасибки )))
...
Рейтинг: 0 / 0
что делает код???
    #34223189
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я - Link_aтеперь я все понял а . пасибки )))

умная бландынка..

(круглый)
ЗЫ
Шутк юмора...
...
Рейтинг: 0 / 0
что делает код???
    #34223357
Den_di
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, переносить что-то похожее на C#, где нет указателей... а это скорее всего один из нормальных участков кода...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / что делает код???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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