C++ предоставя библиотеката
Напишете двоичен файл с C++
За да запишете данните в двоичен файл с помощта на C++, се използва методът write(). Тази функция записва определен брой байтове в определения поток, започвайки от местоположението на указателя 'put'. Ако показалецът “put” е в края, файлът се разширява. Новите данни обаче презаписват съществуващите знаци, ако указателят е във файла. В случай на грешка по време на процеса на запис, потокът се маркира като в състояние на грешка. Сега нека преминем към примерите, за да научим как да пишем в двоичен файл с помощта на някои прости и вградени в C++ функции.
Метод 1: Записване на двоични файлове със структурирани данни
В много случаи може да се наложи да запишете структурирани данни, като персонализирани структури, в двоичен файл. Нека разгледаме пример, който съдържа запис на човек, който включва името, височината и възрастта на лицето. Вижте следния даден код и погледнете обяснението:
#include
#include
структура Лице {
въглен име [ петдесет ] ;
вътр възраст ;
двойно височина ;
} ;
вътр основен ( ) {
std :: ofstream outFile ( 'people.bin' , std :: ios :: двоичен ) ;
ако ( ! outFile. е отворено ( ) ) {
std :: cerr << 'Грешка! Не може да се отвори файл за запис!' << std :: endl ;
връщане 1 ;
}
Лице person1 = { 'Калсум Иляс' , 25 , 1,75 } ;
Лице person2 = { 'Kalsoom Bajwa' , 30 , 1,68 } ;
outFile. пишете ( reinterpret_cast < въглен *> ( и човек 1 ) , размер на ( човек 1 ) ) ;
outFile. пишете ( reinterpret_cast < въглен *> ( и човек2 ) , размер на ( човек2 ) ) ;
outFile. близо ( ) ;
std :: cout << „Записът на лицето е записан успешно в двоичен файл.“ << std :: endl ;
връщане 0 ;
}
Ето разбивка на кода с конкретни подробности. Програмата започва с дефиниране на персонализирана структура, наречена 'Person'. Има три полета: име, възраст и ръст. Подробностите за тези полета са както следва:
- име: Низ за съхраняване на името на лицето (до 50 знака)
- възраст: Цяло число за съхраняване на възрастта на лицето
- височина: Двойник за съхранение на височината на човека
След дефиниране на структурата 'Person' стартира основната функция, която е входната точка на програмата. Първият ред в главната програма отваря файл с име „people.bin“. Използваме „std::ofstream“, за да създадем файл с име „people.bin“ за запис на данните в двоичен формат. Проверката дали файлът се отваря успешно е много важна. В противен случай се показва съобщение за грешка и програмата спира. Следователно с помощта на условието “if” и функцията is_open() проверяваме дали файлът е отворен успешно или не.
Тук се създават двата обекта 'Person'. Ние дефинираме две променливи, “person1” и “person2”, от тип “Person”. Присвояваме името на променливата, възрастта и стойностите на височината за „Kalsoom Ilyas“ и „Kalsoom Bajwa“.
Сега, когато имаме данните за запис в двоичен файл, нека изпълним действителната функция с функцията write(). Използваме “outFile.write”, за да запишем съдържанието на всеки обект “Person” във файла. „reinterpret_cast
След като запишете данните във файла, е много важно да го затворите правилно, така че никакви данни да не се загубят поради друга функция. Използваме outFile.close(), за да освободим ресурсите, които са свързани с файла, и да гарантираме, че данните са написани точно. Накрая отпечатваме съобщение, което потвърждава успешното записване на данните в двоичния файл.
Ако обясним този пример с по-прости думи, представете си специална тетрадка, която може да съхранява информация за хора само на таен език. Този код създава план за организиране на информацията (име, възраст, височина). Отваря бележника, попълва профилите на двама души, превежда информацията на тайния език и я записва спретнато вътре. След това затваря сигурно бележника, като запазва профилите за бъдеща употреба. Обърнете се към изхода на програмата, който е даден в следната моментна снимка:
Метод 2: Записване на цели числа в двоичен файл
При този метод масив от цели числа се записва в двоичен файл с име „integers.bin“. “reinterpret_cast
#include
вътр основен ( ) {
std :: ofstream outFile ( 'integers.bin' , std :: ios :: двоичен ) ;
ако ( ! outFile. е отворено ( ) ) {
std :: cerr << 'Грешка! Не може да се отвори файл за запис!' << std :: endl ;
връщане 1 ;
}
вътр числа [ ] = { 42 , 99 , - 1 , 0 } ;
outFile. пишете ( reinterpret_cast < въглен *> ( числа ) , размер на ( числа ) ) ;
outFile. близо ( ) ;
std :: cout << „Дадените цели числа са записани успешно в двоичен файл.“ << std :: endl ;
връщане 0 ;
}
Ето разбивка на кода с конкретни подробности:
“#include
Следващият ред, който е „int numbers[] = {42, 99, -1, 0};“ дефинира масив с име „numbers“ с цели числа 42, 99, -1 и 0. „outFile.write(reinterpret_cast
Заключение
Писането на двоични файлове на C++ е решаващо умение за ефективна работа с различните типове данни. В това изследване на писането на двоични файлове в C++ научихме как класът „ofstream“ може да се използва за ефективна обработка на двоичните данни. Независимо дали се работи с прости цели числа или структурирани данни, използващи потребителски структури, процесът включва отваряне на файлов поток, запис на данните в двоичен формат и след това затваряне на файла. Тази възможност предоставя на разработчиците на C++ гъвкавостта да работят с разнообразна гама от двоични типове данни, допринасяйки за гъвкавостта на езика в приложения, които варират от програмиране на системно ниво до мултимедийна обработка.