Loligan: Все равно важнейший вопрос - зачем. Если ваше "зачем" ограничено этим "надо" - ну, сделайте велосипед.
4 байта под int, 4 байта под длину строки, строка, 4 байта под длину строки, строка. Повторить столько раз, сколько хранится записей.
Loligan: и вы думаете, что вы ответили на этот вопрос?
С чего вы взяли, что вам надо именно сохранять эти данные в бинарный файл? Это четкое задание? Или вы сами так придумали? Бинарный файл не может быть, например, xml-файлом или базой данных SQLite? Что будет, когда вам придется обновлять программу и добавлять поле string address, а у вас уже накоплены такие бинарные файлы, в которых нет этого поля?
Loligan: разница между std::vector и std::string - по большей части косметическая. Я же не знаю, что именно вы собрались делать - как я могу что-то вам советовать?
Loligan: std::string - это контейнер. Контейнеры работают с динамической памятью. При сериализации копируется содержимое строки, а при десериализации требуется инициализация строки этими данными.
Конкретная сериализация может быть произвольной - например, чтобы не изобретать велосипеды, записать данные из членов класса в распространенном формате - xml / json / что вам больше нравится и подходит. Главное - сделать конструктор класса, который, приняв данные в таком формате, правильно их прочитает и пропишет в свои члены.
С++ - язык со строгой типизацией. Такого, как в динамических языках - чтобы объект мог быть создан какой-то функцией по его строковому описанию - нет и быть не может.
Главное преимущество С++ над С - в том, что ты можешь писать в нем на С, если тебе это действительно позарез нужно, и НЕ писать на С во всех остальных случаях ;)
TIFF - формат, хранящий изображение без потерь и изначально предусматривающий разные цветовые схемы.
JPEG предусматривает сжатие картинки с потерями, и CMYK к нему прилеплен искусственно.
Например, дополнительный канал для печати белой краской, насколько мне известно, в JPEG просто-напросто не запихнешь.
Движение дотНета выглядит весьма подозрительным с учетом того, что владелец языка ПРЯМО ЗАИНТЕРЕСОВАН в том, чтобы оно, конечно, работало на Linux и Maс, но обязательно через задницу - чтобы заманивать народ обратно на Винды.
Самое приятное в локализованном IDE - это локализованные проблемы, которые возникают, пока его не освоишь. Найти решение проблемы после перевода на порядок сложнее, чем до.
Ну, а когда освоишься - с удивлением проверяешь: а что, оно правда не переведено? Вот ведь, а все понятно...
EVOSandru6: почему вообще данные определяет метод этого класса, если объект класса не может быть создан без этих данных?
Понимаете, какая штука. Классы в С++ существуют для того, чтобы собрать в конкретные и понятные абстракции код, который делает какую-то конкретную работу и при этом может быть изолирован от всего остального кода. То, что внутри класса, не должно зависеть от того, что снаружи, и наоборот. Все связи внутрь и наружу - только через методы.
А у вас собрано в кучу все, что рядом лежало, без построения какой-либо абстракции вообще. Зачем объекту знать, сколько таких объектов существует? Если какая-то часть кода оперирует набором объектов, то это должен быть отдельный класс, а не тот же класс объекта. За исключением применения паттерна Контейнер, когда у объекта могут быть дочерние объекты того же типа.
EVOSandru6: ну так подумайте сами - почему у вас количество записей определяется внутри объекта, для создания которого уже нужно это количество записей. Может, этим должны заведовать разные классы? Или это количество стоит определять непосредственно перед созданием объектов и просто передавать его как аргумент конструкторам?
Мне непонятно, какую именно абстракцию реализует этот класс, по приведенному вами коду. Есть подозрение, что вы сами это тоже не очень понимаете.