Input/output (C++)
சி + + நிரலாக்க மொழியில், உள்ளீடு/வெளியீட்டு நூலகம் என்பது சி + + நிலையான நூலகத்தில் உள்ள வகுப்பு வார்ப்புருக்கள் மற்றும் துணை செயல்பாடுகளின் குடும்பத்தைக் குறிக்கிறது, அவை ஸ்ட்ரீம் அடிப்படையிலான உள்ளீடு/வெளியீட்டு திறன்களை செயல்படுத்துகின்றன. இது சி நிலையான நூலகத்திலிருந்து சி இன் எஃப். ஐ. எல் அடிப்படையிலான நீரோடைகளுக்கு ஒரு பொருள் சார்ந்த மாற்றாகும். சி + + இன் படைப்பாளரான பிஜார்னே ஸ்ட்ரூஸ்ட்ரப், 1984 ஆம் ஆண்டில் ஸ்ட்ரீம் ஐ/ஓ நூலகத்தின் முதல் பதிப்பை எழுதினார், இது சி இன் ஐ/ஓ நூலகத்திற்கு ஒரு வகை-பாதுகாப்பான மற்றும் விரிவாக்கக்கூடிய மாற்றாக இருந்தது. இந்த ஆரம்ப பதிப்பிலிருந்து நூலகம் பல மேம்பாடுகளுக்கு உட்பட்டுள்ளது, இதில் வடிவமைப்பைக் கட்டுப்படுத்த கையாளிகளை அறிமுகப்படுத்துதல் மற்றும் சாரைத் தவிர வேறு எழுத்து வகைகளுடன் அதன் பயன்பாட்டை அனுமதிக்க டெம்ப்ளேட்டைசேஷன் ஆகியவை அடங்கும். 1998 ஆம் ஆண்டில் தரப்படுத்தப்பட்டதில் நூலகம் STD பெயர்வெளிக்கு மாற்றப்பட்டது, மேலும் முக்கிய தலைப்பு <iostream.h> இலிருந்து <iost stream> ஆக மாற்றப்பட்டது. இந்த தரப்படுத்தப்பட்ட பதிப்பே கட்டுரையின் எஞ்சிய பகுதியில் உள்ளடக்கப்பட்டுள்ளது. கண்ணோட்டம் நூலகத்தில் உள்ள பெரும்பாலான வகுப்புகள் உண்மையில் மிகவும் பொதுமைப்படுத்தப்பட்ட வகுப்பு வார்ப்புருக்கள் ஆகும். ஒவ்வொரு வார்ப்புருவும் பல்வேறு எழுத்து வகைகளில் செயல்பட முடியும், மேலும் இரண்டு எழுத்துக்கள் சமத்துவத்திற்காக எவ்வாறு ஒப்பிடப்படுகின்றன என்பது போன்ற செயல்பாடுகளை கூட தனிப்பயனாக்கலாம். இருப்பினும், பெரும்பாலான குறியீடுகள் ஒன்று அல்லது இரண்டு எழுத்து வகைகளை மட்டுமே பயன்படுத்தி உள்ளீடு மற்றும் வெளியீட்டு செயல்பாடுகளைச் செய்ய வேண்டும், இதனால் பெரும்பாலான நேரங்களில் செயல்பாடு பல தட்டச்சு மூலம் அணுகப்படுகிறது, இது பொதுவாக பயன்படுத்தப்படும் வார்ப்புரு மற்றும் எழுத்து வகைகளின் சேர்க்கைகளுக்கான பெயர்களைக் குறிப்பிடுகிறது. எடுத்துக்காட்டாக, பேசிக் _ எஃப்ஸ்ட்ரீம் <சார்ட், ட்ரேட்ஸ்> என்பது கோப்பு ஸ்ட்ரீம்களில் உள்ளீடு/வெளியீட்டு செயல்பாடுகளை செயல்படுத்தும் பொதுவான வகுப்பு வார்ப்புருவைக் குறிக்கிறது. இது வழக்கமாக f ஸ்ட்ரீம் ஆகப் பயன்படுத்தப்படுகிறது, இது அடிப்படை _ f ஸ்ட்ரீம் <சார், சார் _ பண்புக்கூறுகள் <சார்>> என்பதற்கான மாற்றுப்பெயராகும், அல்லது வேறு வார்த்தைகளில் கூறுவதானால், இயல்புநிலை எழுத்து செயல்பாட்டு தொகுப்புடன் வகை சார் எழுத்துக்களில் செயல்படும் அடிப்படை _ எஃப் ஸ்ட்ரீம். நூலகத்தில் உள்ள வகுப்புகளை தோராயமாக இரண்டு பிரிவுகளாகப் பிரிக்கலாம்ஃ சுருக்கங்கள் மற்றும் செயல்படுத்தல்கள். சுருக்கங்கள் பிரிவில் வரும் வகுப்புகள், எந்த வகையான ஸ்ட்ரீமிலும் வேலை செய்ய போதுமான இடைமுகத்தை வழங்குகின்றன. அத்தகைய வகுப்புகளைப் பயன்படுத்தும் குறியீடு தரவு எந்த இடத்திலிருந்து படிக்கப்படுகிறது அல்லது எழுதப்படுகிறது என்பதைப் பொறுத்தது அல்ல. எடுத்துக்காட்டாக, அத்தகைய குறியீடு மறுசீரமைப்பு இல்லாமல் ஒரு கோப்பு, நினைவக இடையக அல்லது வலை சாக்கெட்டில் தரவை எழுதலாம். அமலாக்க வகுப்புகள் சுருக்க வகுப்புகளைப் பெறுகின்றன மற்றும் உறுதியான தரவு மூல அல்லது மூழ்கிக்கு ஒரு செயல்பாட்டை வழங்குகின்றன. கோப்பு அடிப்படையிலான நீரோடைகள் மற்றும் நினைவக இடையக அடிப்படையிலான நீரோடைகளுக்கு மட்டுமே நூலகம் செயல்பாடுகளை வழங்குகிறது. நூலகத்தில் உள்ள வகுப்புகள் குறைந்த அளவிலான செயல்பாடுகளைச் செய்கிறதா அல்லது உயர் மட்ட செயல்பாடுகளைச் செய்கிறதா என்பதைப் பொறுத்து இரண்டு குழுக்களாகப் பிரிக்கலாம். குறைந்த அளவிலான விஷயங்களைக் கையாளும் வகுப்புகள் ஸ்ட்ரீம் இடையகங்கள் என்று அழைக்கப்படுகின்றன. அவை எந்த வடிவமைப்பு செயல்பாட்டையும் வழங்காமல் எழுத்துக்களில் செயல்படுகின்றன. இந்த வகுப்புகள் மிகவும் அரிதாகவே நேரடியாகப் பயன்படுத்தப்படுகின்றன. உயர்மட்ட வகுப்புகள் நீரோடைகள் என்று அழைக்கப்படுகின்றன மற்றும் பல்வேறு வடிவமைப்பு திறன்களை வழங்குகின்றன. அவை நீரோடை இடையகங்களின் மேல் கட்டப்பட்டுள்ளன. பின்வரும் அட்டவணை உள்ளீட்டு-வெளியீட்டு நூலகத்தால் வழங்கப்பட்ட அனைத்து வகுப்புகளையும் பட்டியலிட்டு வகைப்படுத்துகிறது. தலைப்பு கோப்புகள் உள்ளீடு/வெளியீட்டு நூலகத்தின் வகுப்புகள் பல தலைப்புகளில் உள்ளன. <ஐஓஎஸ்> இல் ஐஓஎஸ் _ பேஸ் மற்றும் பேசிக் _ ஐஓஎஸ் வகுப்புகளின் வரையறைகள் உள்ளன, அவை வடிவமைக்கும் தகவல்களையும் அதனுடன் தொடர்புடைய ஸ்ட்ரீம்-பஃபரையும் நிர்வகிக்கின்றன. <ஐஸ்ட்ரீம்> அடிப்படை _ ஐஸ்ட்ரீம் வகுப்பு வார்ப்புருவின் வரையறையைக் கொண்டுள்ளது, இது வடிவமைக்கப்பட்ட உள்ளீட்டை செயல்படுத்துகிறது. <ஓஸ்ட்ரீம்> அடிப்படை _ ஓஸ்ட்ரீம் வகுப்பு வார்ப்புருவின் வரையறையைக் கொண்டுள்ளது, இது வடிவமைக்கப்பட்ட வெளியீட்டை செயல்படுத்துகிறது. <ஐயோஸ்ட்ரீம்> அடிப்படை _ ஐயோஸ்ட்ரீம் வகுப்பு வார்ப்புருவின் வரையறையைக் கொண்டுள்ளது, இது வடிவமைக்கப்பட்ட உள்ளீடு மற்றும் வெளியீட்டை செயல்படுத்துகிறது, மேலும் இதில் <ஐஓஎஸ்>, <ஐஸ்ட்ரீம்> மற்றும் <ஓஸ்ட்ரீம்> ஆகியவை அடங்கும். கோப்பு ஸ்ட்ரீம்களில் வடிவமைக்கப்பட்ட உள்ளீடு, வெளியீடு மற்றும் உள்ளீடு/வெளியீட்டை செயல்படுத்தும் அடிப்படை _ ஐஃப்ஸ்ட்ரீம், அடிப்படை _ ஆஃப்ஸ்ட்ரீம் மற்றும் அடிப்படை _ எஃப்ஸ்ட்ரீம் வகுப்பு வார்ப்புருக்கள் ஆகியவற்றின் வரையறைகளை <எஃப்ஸ்ட்ரீம்> கொண்டுள்ளது. சரம் அடிப்படையிலான நீரோடைகளில் வடிவமைக்கப்பட்ட உள்ளீடு, வெளியீடு மற்றும் உள்ளீடு/வெளியீட்டை செயல்படுத்தும் அடிப்படை _ ஐஸ்ட்ரிங்ஸ்ட்ரீம், அடிப்படை _ ஆஸ்ட்ரிங்ஸ்ட்ரீம் மற்றும் அடிப்படை _ ஸ்ட்ரிங்ஸ்ட்ரீம் வகுப்பு வார்ப்புருக்கள் ஆகியவற்றின் வரையறைகளை <ஸ்ட்ரீம்> கொண்டுள்ளது. <அயோமானிப்> வடிவமைப்பு கையாளிகளை கொண்டுள்ளது. <iosfwd> உள்ளீடு/வெளியீட்டு நூலகத்தில் உள்ள அனைத்து வகுப்புகளின் முன்னோக்கி அறிவிப்புகளைக் கொண்டுள்ளது. ஸ்ட்ரீம் இடையகங்கள் சி + + மொழியில் அட்டவணையாக வரையறுக்கப்பட்ட பன்னிரண்டு ஸ்ட்ரீம் இடையக வகுப்புகள் உள்ளன. ஆதரவு வகுப்புகள் ஐஓஎஸ் _ பேஸ் மற்றும் பேசிக் _ ஐஓஎஸ் ஆகியவை ஒரு ஸ்ட்ரீமின் கீழ் நிலை பிட்களை நிர்வகிக்கும் இரண்டு வகுப்புகள் ஆகும். தகவல் மற்றும் ஸ்ட்ரீமின் நிலையை வடிவமைக்கும் ஐஓஎஸ் _ பேஸ் ஸ்டோர்கள். Basic _ ios தொடர்புடைய ஸ்ட்ரீம்-பஃப்பரை நிர்வகிக்கிறது. Basic _ ios பொதுவாக வெறுமனே ios அல்லது wios என்று அழைக்கப்படுகிறது, அவை ஒரு குறிப்பிட்ட எழுத்து வகையுடன் Basic _ ios க்கான இரண்டு தட்டச்சு ஆகும். அடிப்படை _ ஐஓஎஸ் மற்றும் ஐஓஎஸ் _ பேஸ் ஆகியவை புரோகிராமர்களால் நேரடியாகப் பயன்படுத்தப்படுவது மிகவும் அரிது. வழக்கமாக, அவற்றின் செயல்பாடு அயோஸ்ட்ரீம் போன்ற பிற வகுப்புகள் மூலம் அணுகப்படுகிறது, அவை அவற்றைப் பெறுகின்றன. உள்ளீடு/வெளியீடு நீரோடைகள் சி + + உள்ளீடு/வெளியீடு நீரோடைகள் முதன்மையாக அயோஸ்ட்ரீம் மூலம் வரையறுக்கப்படுகின்றன, இது சி + + நிலையான நூலகத்தின் ஒரு பகுதியாகும் (பெயர் உள்ளீடு/வெளியீடு ஸ்ட்ரீமைக் குறிக்கிறது). சி + + மற்றும் அதன் முன்னோடியான சி நிரலாக்க மொழியில், தரவு உள்ளீடு அல்லது வெளியீட்டை ஸ்ட்ரீமிங் செய்ய சிறப்பு தொடரியல் இல்லை. மாறாக, இவை செயல்பாடுகளின் நூலகமாக இணைக்கப்பட்டுள்ளன. C இன் stdio.h இலிருந்து பெறப்பட்ட cstdio தலைப்பைப் போலவே, C + + நிரல்களுக்கான அடிப்படை உள்ளீடு மற்றும் வெளியீட்டு சேவைகளை ஐயோஸ்ட்ரீம் வழங்குகிறது. அயோஸ்ட்ரீம் முறையே நிலையான ஸ்ட்ரீம்களின் உள்ளீடு, வெளியீடு, பிழை (கட்டப்படாதது) மற்றும் பதிவு (இடையகப்படுத்தப்பட்ட) ஆகியவற்றிலிருந்து தரவை அனுப்புவதற்கு சின், கவுட், செர் மற்றும் க்ளோக் ஆகிய பொருள்களைப் பயன்படுத்துகிறது. சி + + நிலையான நூலகத்தின் ஒரு பகுதியாக, இந்த பொருள்கள் எஸ். டி. டி பெயர் இடத்தின் ஒரு பகுதியாகும். கவுட் பொருள் ஓஸ்ட்ரீம் வகையைச் சேர்ந்தது, இது இடது பிட்-ஷிப்ட் ஆபரேட்டரை பிட்வைஸ் செயல்பாடுகளுடன் முற்றிலும் தொடர்பில்லாத ஒரு செயல்பாட்டைச் செய்ய அதிக சுமையை செலுத்துகிறது, மேலும் குறிப்பாக இடது வாதத்தின் மதிப்பை மதிப்பீடு செய்கிறது, இது ஒரே ஓஸ்ட்ரீம் பொருளில் பல செயல்பாடுகளை அனுமதிக்கிறது, அடிப்படையில் முறை அடுக்குக்கான வேறுபட்ட தொடரியல், ஒரு சரளமான இடைமுகத்தை அம்பலப்படுத்துகிறது. செர் மற்றும் க்ளோக் பொருள்களும் ஓஸ்ட்ரீம் வகையைச் சேர்ந்தவை, எனவே அவை அந்த ஆபரேட்டரையும் மிகைப்படுத்துகின்றன. சின் பொருள் ஐஸ்ட்ரீம் வகையைச் சேர்ந்தது, இது சரியான பிட்-ஷிப்ட் ஆபரேட்டரை மிகைப்படுத்துகிறது. பிட்-ஷிப்ட் ஆபரேட்டர்களின் திசைகள் தரவு வெளியீட்டு நீரோட்டத்தை நோக்கி பாய்வது அல்லது உள்ளீட்டு நீரோட்டத்திலிருந்து விலகிச் செல்வது போல் தோன்றுகிறது. வெளியீட்டு வடிவமைப்பு முறைகள் கையாளிகள் கையாளிகள் என்பது <<அல்லது>> ஆபரேட்டர்களைப் பயன்படுத்தி ஒரு ஸ்ட்ரீமை மாற்றியமைக்கக்கூடிய பொருள்கள் ஆகும். பிற கையாளிகளை தலைப்பு அயோமானிப் பயன்படுத்தி காணலாம். வடிவமைப்பு கையாளிகள் இறுதியில் "மீட்டமைக்கப்பட வேண்டும்" அல்லது புரோகிராமர் எதிர்பாராத விதமாக அடுத்த வெளியீட்டு அறிக்கையில் அவற்றின் விளைவுகளைப் பெறுவார். சி + + நிலையான நூலகத்தின் சில செயல்பாடுகள் குறிப்பிடத்தக்க அளவு இறந்த குறியீட்டைக் கொண்டுள்ளன. எடுத்துக்காட்டாக, குனு libstdc + + ஒரு ஓஸ்ட்ரீமை உருவாக்கும் போது தானாகவே ஒரு இருப்பிடத்தை உருவாக்குகிறது, ஒரு நிரல் ஒரு இருப்பிடத்தை பாதிக்கும் எந்த வகைகளையும் (தேதி, நேரம் அல்லது பணம்) பயன்படுத்தாவிட்டாலும் கூட, மற்றும் நிலையான முறையில் இணைக்கப்பட்ட "ஹலோ, வேர்ல்ட்!" குனு libstdc + + இன் <ஐயோஸ்ட்ரீம்> ஐப் பயன்படுத்தும் நிரல், <cstdio> ஐப் பயன்படுத்தும் சமமான நிரலை விட பெரிய அளவிலான இயக்கக்கூடிய வரிசையை உருவாக்குகிறது. இடம்-கட்டுப்படுத்தப்பட்ட சூழல்களுக்காக வடிவமைக்கப்பட்ட சி + + நிலையான நூலகத்தின் பகுதி செயல்படுத்தல்கள் உள்ளன; அவற்றின் <ஐயோஸ்ட்ரீம்> அத்தகைய சூழல்களில் நிரல்களுக்குத் தேவையில்லாத அம்சங்களை விட்டுவிடலாம், அதாவது லோக்கல் ஆதரவு. பெயரிடும் மரபுகள் எடுத்துக்காட்டுகள் "ஹலோ, வேர்ல்ட்!" நிரலை பின்வருமாறு வெளிப்படுத்தலாம்ஃ #include <ஐயோஸ்ட்ரீம்> இன்ட் மெயின் () {எஸ்டிடிஃஃ கவுட் <<"ஹலோ, வேர்ல்ட்!" இந்த நிரல் "ஹலோ, வேர்ல்ட்!" என்று வெளியிடும். அதைத் தொடர்ந்து ஒரு புதிய வரி மற்றும் நிலையான வெளியீட்டு ஸ்ட்ரீம் இடையக ஃப்ளஷ். பின்வரும் எடுத்துக்காட்டு 'file.txt' என்ற கோப்பை உருவாக்கி, 'ஹலோ, உலகம்!' என்ற உரையை வைக்கிறது. அதைத் தொடர்ந்து ஒரு புதிய வரிசை. #include <எஃப்ஸ்ட்ரீம்> இன்ட் மெயின் () {எஸ்டிடிஃஃ ஆஃப்ஸ்ட்ரீம் கோப்பு ("file.txt"); கோப்பு <<ஹலோ, வேர்ல்ட்! குறிப்புகள் வெளிப்புற இணைப்புகள் உள்ளீடு/வெளியீடு நூலகத்திற்கான சி + + குறிப்பு அப்பாச்சி சி + + நிலையான நூலகம் அயோஸ்டிரீம்கள் சி + + சி + + சி + + நிலையான நூலகக் கட்டுரைகளில் வெளியீட்டை வடிவமைப்பது குறித்த விரிவான பயிற்சி எடுத்துக்காட்டாக சி + + குறியீடு