C++ இல் பைனரி கோப்பை எழுதவும்

C Il Painari Koppai Elutavum



C++ நிரலாக்கத்தில், பைனரி கோப்புகளைக் கையாள்வது மூலத் தரவைச் சேமிப்பதற்கும் கையாளுவதற்கும் அடிப்படையாகும். நீங்கள் படங்கள், ஆடியோ கோப்புகள் அல்லது தனிப்பயன் தரவு கட்டமைப்புகளுடன் பணிபுரிந்தாலும், பைனரி கோப்புகளை திறமையாக எழுதும் திறன் முக்கியமானது. பைனரி கோப்புகள், மனிதனால் படிக்க முடியாத வடிவத்தில் தரவைச் சேமித்து, சிக்கலான கட்டமைப்புகள், படங்கள் அல்லது எளிய உரை அடிப்படையிலான பிரதிநிதித்துவத்தைப் பின்பற்றாத எந்தத் தரவையும் சேமிப்பது போன்ற பல்வேறு பயன்பாடுகளுக்கு ஏற்றதாக அமைகிறது.

பைனரி தரவுகளை எழுதுவதற்கு, பைனரி கோப்புகளுடன், குறிப்பாக 'ஆஃப்ஸ்ட்ரீம்' கிளாஸுடன் தொடர்பு கொள்ள, நூலகத்தை C++ வழங்குகிறது. இந்த திறன் டெவலப்பர்களை பைனரி கோப்புகளை தடையின்றி உருவாக்க, மாற்ற மற்றும் நிர்வகிக்க அனுமதிக்கிறது. C++ இல் பைனரி கோப்புகளை எழுதுவதற்கான பல்வேறு முறைகள் மற்றும் நுட்பங்களை இந்தக் கட்டுரை ஆராய்கிறது, அவற்றின் பயன்பாடுகள் மற்றும் பயன்பாட்டு நிகழ்வுகளில் வெளிச்சம் போடுகிறது.

C++ ஐப் பயன்படுத்தி பைனரி கோப்பை எழுதவும்

C++ ஐப் பயன்படுத்தி தரவை பைனரி கோப்பில் சேமிக்க, எழுதும்() முறை பயன்படுத்தப்படுகிறது. இந்தச் செயல்பாடு, 'புட்' பாயிண்டரின் இடத்தில் தொடங்கி, நியமிக்கப்பட்ட ஸ்ட்ரீமுக்கு குறிப்பிட்ட எண்ணிக்கையிலான பைட்டுகளை எழுதுகிறது. 'புட்' சுட்டிக்காட்டி இறுதியில் இருந்தால், கோப்பு நீட்டிக்கப்படும். இருப்பினும், கோப்பில் சுட்டிக்காட்டி இருந்தால், புதிய தரவு ஏற்கனவே உள்ள எழுத்துக்களை மேலெழுதும். எழுதும் செயல்முறையின் போது பிழை ஏற்பட்டால், ஸ்ட்ரீம் பிழை நிலையில் இருப்பதாகக் குறிக்கப்படும். இப்போது, ​​சில எளிய மற்றும் உள்ளமைக்கப்பட்ட C++ செயல்பாடுகளைப் பயன்படுத்தி பைனரி கோப்பில் எழுதுவது எப்படி என்பதை அறிய உதாரணங்களுக்குச் செல்வோம்.







முறை 1: கட்டமைக்கப்பட்ட தரவுகளுடன் பைனரி கோப்புகளை எழுதுதல்

பல சமயங்களில் பைனரி கோப்பில் தனிப்பயன் கட்டமைப்புகள் போன்ற கட்டமைக்கப்பட்ட தரவை நீங்கள் எழுத வேண்டியிருக்கலாம். ஒரு நபரின் பெயர், உயரம் மற்றும் வயது ஆகியவற்றை உள்ளடக்கிய ஒரு நபரின் பதிவைக் கொண்ட ஒரு உதாரணத்தைக் கருத்தில் கொள்வோம். கீழே கொடுக்கப்பட்டுள்ள குறியீட்டைப் பார்த்து விளக்கத்தைப் பாருங்கள்:



# அடங்கும்

# அடங்கும்

கட்டமைக்க நபர் {

கரி பெயர் [ ஐம்பது ] ;

முழு எண்ணாக வயது ;

இரட்டை உயரம் ;

} ;

முழு எண்ணாக முக்கிய ( ) {

வகுப்பு :: நீரோடை அவுட்ஃபைல் ( 'மக்கள்.பின்' , வகுப்பு :: ios :: பைனரி ) ;

என்றால் ( ! அவுட்ஃபைல். திறந்துள்ளது ( ) ) {

வகுப்பு :: செர்ர் << 'பிழை! எழுதுவதற்கான கோப்பைத் திறக்க முடியவில்லை!' << வகுப்பு :: endl ;

திரும்ப 1 ;

}

நபர் நபர்1 = { 'கல்சூம் இல்யாஸ்' , 25 , 1.75 } ;

நபர் நபர்2 = { 'கல்சூம் பஜ்வா' , 30 , 1.68 } ;

அவுட்ஃபைல். எழுது ( மறுவிளக்கம்_காஸ்ட் < கரி *> ( & நபர் 1 ) , அளவு ( நபர் 1 ) ) ;

அவுட்ஃபைல். எழுது ( மறுவிளக்கம்_காஸ்ட் < கரி *> ( & நபர்2 ) , அளவு ( நபர்2 ) ) ;

அவுட்ஃபைல். நெருக்கமான ( ) ;

வகுப்பு :: கூட் << 'நபரின் பதிவு வெற்றிகரமாக பைனரி கோப்பில் எழுதப்பட்டது.' << வகுப்பு :: endl ;

திரும்ப 0 ;

}

குறிப்பிட்ட விவரங்களுடன் குறியீட்டின் முறிவு இங்கே உள்ளது. 'நபர்' என்ற தனிப்பயன் கட்டமைப்பை வரையறுப்பதன் மூலம் நிரல் தொடங்குகிறது. இது மூன்று துறைகளைக் கொண்டுள்ளது: பெயர், வயது மற்றும் உயரம். இந்த துறைகளின் விவரங்கள் பின்வருமாறு:



  • பெயர்: நபரின் பெயரைச் சேமிப்பதற்கான ஒரு சரம் (50 எழுத்துகள் வரை)
  • வயது: நபரின் வயதைச் சேமிக்க ஒரு முழு எண்
  • உயரம்: நபரின் உயரத்தை சேமிக்க ஒரு இரட்டை

'நபர்' கட்டமைப்பை வரையறுத்த பிறகு, நிரலின் நுழைவு புள்ளியாக இருக்கும் முக்கிய செயல்பாடு தொடங்குகிறது. பிரதான நிரலின் முதல் வரி 'people.bin' என்ற கோப்பைத் திறக்கிறது. பைனரி வடிவத்தில் தரவை எழுதுவதற்கு 'people.bin' என்ற கோப்பை உருவாக்க 'std::ofstream' ஐப் பயன்படுத்துகிறோம். கோப்பு வெற்றிகரமாக திறக்கப்படுகிறதா என்று பார்ப்பது மிகவும் முக்கியம். இல்லையெனில், ஒரு பிழை செய்தி காட்டப்படும் மற்றும் நிரல் நிறுத்தப்படும். எனவே, “if” நிபந்தனை மற்றும் is_open() செயல்பாட்டின் உதவியுடன், கோப்பு வெற்றிகரமாக திறக்கப்பட்டதா இல்லையா என்பதை நாங்கள் சரிபார்க்கிறோம்.





இங்கே, இரண்டு 'நபர்' பொருள்கள் உருவாக்கப்படுகின்றன. 'நபர்' வகையின் 'person1' மற்றும் 'person2' ஆகிய இரண்டு மாறிகளை நாங்கள் வரையறுக்கிறோம். 'கல்சூம் இல்யாஸ்' மற்றும் 'கல்சூம் பஜ்வா' ஆகியவற்றிற்கான மாறி பெயர், வயது மற்றும் உயர மதிப்புகளை நாங்கள் ஒதுக்குகிறோம்.

இப்போது பைனரி கோப்பில் எழுதுவதற்குத் தரவு இருப்பதால், எழுது() செயல்பாட்டின் மூலம் உண்மையான செயல்பாட்டைச் செய்வோம். ஒவ்வொரு 'நபர்' பொருளின் உள்ளடக்கத்தையும் கோப்பில் எழுத 'outFile.write' ஐப் பயன்படுத்துகிறோம். “reinterpret_cast(&person1)” மற்றும் “reinterpret_cast(&person2)” முழு “நபர்” கட்டமைப்பையும் (அதன் அனைத்து புலங்களையும் சேர்த்து) பைனரி கோப்பில் எழுதுவதற்கு ஏற்ற பைட்டுகளின் தொடர்ச்சியான ஸ்ட்ரீமாக மாற்றுகிறது. . எல்லாத் தரவும் சரியாக எழுதப்பட்டுள்ளதா என்பதை உறுதிப்படுத்த, 'sizeof(person1)' மற்றும் 'sizeof(person2)' ஐப் பயன்படுத்தி ஒவ்வொரு 'நபர்' பொருளின் அளவையும் எழுதுகிறோம்.



கோப்பில் தரவை எழுதிய பிறகு, அதை சரியாக மூடுவது மிகவும் முக்கியம், இதனால் வேறு எந்த செயல்பாட்டினாலும் தரவு இழக்கப்படாது. கோப்புடன் தொடர்புடைய ஆதாரங்களை வெளியிடுவதற்கும், தரவு துல்லியமாக எழுதப்பட்டிருப்பதை உறுதி செய்வதற்கும் outFile.close() ஐப் பயன்படுத்துகிறோம். இறுதியாக, பைனரி கோப்பில் தரவு வெற்றிகரமாக எழுதப்பட்டதை உறுதிப்படுத்தும் செய்தியை அச்சிடுகிறோம்.

இந்த உதாரணத்தை நாம் எளிமையான சொற்களில் விளக்கினால், ஒரு சிறப்பு நோட்புக்கை கற்பனை செய்து பாருங்கள், அது ஒரு ரகசிய மொழியில் மட்டுமே நபர்களைப் பற்றிய தகவலைச் சேமிக்க முடியும். இந்த குறியீடு தகவலை (பெயர், வயது, உயரம்) ஒழுங்கமைப்பதற்கான ஒரு வரைபடத்தை உருவாக்குகிறது. இது நோட்புக்கைத் திறந்து, இரண்டு நபர்களுக்கான சுயவிவரங்களை நிரப்புகிறது, தகவலை ரகசிய மொழியில் மொழிபெயர்த்து, உள்ளே அழகாக எழுதுகிறது. இது நோட்புக்கைப் பாதுகாப்பாக மூடுகிறது, எதிர்கால பயன்பாட்டிற்காக சுயவிவரங்களைப் பாதுகாக்கிறது. பின்வரும் ஸ்னாப்ஷாட்டில் கொடுக்கப்பட்டுள்ள நிரலின் வெளியீட்டைப் பார்க்கவும்:

முறை 2: பைனரி கோப்பில் முழு எண்களை எழுதுதல்

இந்த முறையில், 'integers.bin' என்ற பைனரி கோப்பில் முழு எண்களின் வரிசை எழுதப்படுகிறது. “reinterpret_cast” முழு எண் வரிசையை கோப்பில் எழுதுவதற்கான எழுத்துகளின் (பைட்டுகள்) வரிசையாகக் கருதுகிறது. பைனரி கோப்புகள் மூல பைட் தரவைக் கையாள்வதால் இது மிகவும் முக்கியமானது. பின்வரும் எளிய உதாரணத்தைப் பார்ப்போம்:

# அடங்கும்

# அடங்கும்

முழு எண்ணாக முக்கிய ( ) {

வகுப்பு :: நீரோடை அவுட்ஃபைல் ( 'integers.bin' , வகுப்பு :: ios :: பைனரி ) ;

என்றால் ( ! அவுட்ஃபைல். திறந்துள்ளது ( ) ) {

வகுப்பு :: செர்ர் << 'பிழை! எழுதுவதற்கான கோப்பைத் திறக்க முடியவில்லை!' << வகுப்பு :: endl ;

திரும்ப 1 ;

}

முழு எண்ணாக எண்கள் [ ] = { 42 , 99 , - 1 , 0 } ;

அவுட்ஃபைல். எழுது ( மறுவிளக்கம்_காஸ்ட் < கரி *> ( எண்கள் ) , அளவு ( எண்கள் ) ) ;

அவுட்ஃபைல். நெருக்கமான ( ) ;

வகுப்பு :: கூட் << 'பைனரி கோப்பில் எழுதப்பட்ட முழு எண்கள் வெற்றிகரமாக.' << வகுப்பு :: endl ;

திரும்ப 0 ;

}

குறிப்பிட்ட விவரங்களுடன் குறியீட்டின் முறிவு இங்கே:

“#include ” மற்றும் “#include ” ஆகியவை கோப்புகளுடன் வேலை செய்வதற்கும், முறையே சின் மற்றும் ரைட்() போன்ற செய்திகளை அச்சிடுவதற்கும் தேவையான கருவிகளைக் கொண்டு வருகின்றன. 'std::ofstream outFile('integers.bin', std::ios::binary);' 'integers.bin' என்ற பெயரிடப்பட்ட பைனரி கோப்பை திறக்கிறது, அது எண்களை ஒரு ரகசிய குறியீட்டில் (பைனரி வடிவம்) மட்டுமே சேமிக்க முடியும். கோப்பு திறந்திருக்கிறதா என்று சரிபார்க்கிறது. இல்லையெனில், ஒரு பிழை செய்தி வழங்கப்படுகிறது.

அடுத்த வரி “எண்கள்[] = {42, 99, -1, 0};” முழு எண்கள் 42, 99, -1 மற்றும் 0 உடன் “எண்கள்” என்ற பெயரிடப்பட்ட வரிசையை வரையறுக்கிறது. “outFile.write(reinterpret_cast(எண்கள்), sizeof(எண்கள்));” முழு எண்களை பைனரி வடிவத்தில் கவனமாக மொழிபெயர்த்து அவற்றை 'integer.bin' கோப்பில் எழுதுகிறது. 'outFile.close();' முழு எண்களை பாதுகாப்பாகவும் ஒழுங்காகவும் வைத்திருக்க கோப்பை சரியாக மூடுகிறது. இறுதியாக, பைனரி கோப்பில் முழு எண்கள் வெற்றிகரமாக சேமிக்கப்பட்டுள்ளன என்பதை உறுதிப்படுத்த ஒரு செய்தி அச்சிடப்படுகிறது. முடிவைக் காண இந்த நிரலின் பின்வரும் வெளியீட்டைப் பார்க்கவும்:

முடிவுரை

C++ இல் பைனரி கோப்புகளை எழுதுவது பல்வேறு வகையான தரவுகளை திறமையாக கையாளும் ஒரு முக்கியமான திறமையாகும். C++ இல் பைனரி கோப்புகளை எழுதும் இந்த ஆய்வில், பைனரி தரவை திறம்பட கையாள 'ஆஃப்ஸ்ட்ரீம்' வகுப்பை எவ்வாறு பயன்படுத்தலாம் என்பதை நாங்கள் கற்றுக்கொண்டோம். தனிப்பயன் கட்டமைப்புகளைப் பயன்படுத்தி எளிய முழு எண்கள் அல்லது கட்டமைக்கப்பட்ட தரவுகளைக் கையாள்வது, செயல்பாட்டில் கோப்பு ஸ்ட்ரீமைத் திறப்பது, பைனரி வடிவத்தில் தரவை எழுதுவது, பின்னர் கோப்பை மூடுவது ஆகியவை அடங்கும். இந்த திறன் C++ டெவலப்பர்களுக்கு பல்வேறு வகையான பைனரி தரவு வகைகளுடன் பணிபுரியும் நெகிழ்வுத்தன்மையை வழங்குகிறது, இது கணினி-நிலை நிரலாக்கம் முதல் மல்டிமீடியா செயலாக்கம் வரையிலான பயன்பாடுகளில் மொழியின் பன்முகத்தன்மைக்கு பங்களிக்கிறது.