<< I/O ½ºÆ®¸²(stream) >> C¿¡¼­´Â stdio.h¿¡ ÀÇÇؼ­ ÀÔÃâ·Â ÇÔ¼öµéÀÌ Á¦°øµÇ¾úÀ¸³ª, C++¿¡¼­´Â iost rem.h¿¡ ÀÇÇØ Á¦°øµÇ´Â °´Ã¼¸¦ »ç¿ëÇÏ¿© ½ºÆ®¸²µéÀ» Á¦¾îÇÑ´Ù. ÀÌ Çì´õÆÄÀÏ ¾È¿¡´Â istream, ostreamµî Çϵå¿þ¾î¿Í ¹ÐÁ¢ÇÑ ¿©·¯°¡Áö Ŭ·¡½ºµéÀÌ ¼ÓÇØÀÖ °í, »ó¼ÓÀ» ÅëÇؼ­ ¿©·¯°¡Áö ±â´ÉÀ» Á¦°øÇÑ´Ù. °ü·Ã¼­ÀûÀ» ã¾Æº¸¸é Ŭ·¡½º ÀÇ °è½Âµµ°¡ ³ª¿ÍÀÖ´Ù.. ## ½ºÆ®¸² Ãâ·Â ## ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ ¸í·É¾î¾È³»(C) ÃʱâÈ­¸é(T) Á÷Á¢À̵¿(GO) Á¾·á(X) ¼±ÅÃ> pr PRINTER/CAPTURE °¡ ÁغñµÇ¾ú½À´Ï±î(Y/n) ? ¡º½ÃÁöÇÁ½º(Cezips) C/C++ÇÁ·Î±×·¡¹Ö-DOS,UNIX °­Á (go CEZIPS)¡» 642¹ø Á¦ ¸ñ:[°­ÁÂ] C++ #5 (ÇÏÀÌÅÚ ¼ÒÇÁÆ®µ¿) ¿Ã¸°ÀÌ:nowczps2(½ÃÁöÇÁ½º) 98/01/14 13:05 ÀÐÀ½:439 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- #1518 ¹Úµ¿ºó (ACCESS ) [°­ÁÂ] C++°­Á 5Æí! 08/15 03:22 427 line << I/O ½ºÆ®¸²(stream) >> C¿¡¼­´Â stdio.h¿¡ ÀÇÇؼ­ ÀÔÃâ·Â ÇÔ¼öµéÀÌ Á¦°øµÇ¾úÀ¸³ª, C++¿¡¼­´Â iost rem.h¿¡ ÀÇÇØ Á¦°øµÇ´Â °´Ã¼¸¦ »ç¿ëÇÏ¿© ½ºÆ®¸²µéÀ» Á¦¾îÇÑ´Ù. ÀÌ Çì´õÆÄÀÏ ¾È¿¡´Â istream, ostreamµî Çϵå¿þ¾î¿Í ¹ÐÁ¢ÇÑ ¿©·¯°¡Áö Ŭ·¡½ºµéÀÌ ¼ÓÇØÀÖ °í, »ó¼ÓÀ» ÅëÇؼ­ ¿©·¯°¡Áö ±â´ÉÀ» Á¦°øÇÑ´Ù. °ü·Ã¼­ÀûÀ» ã¾Æº¸¸é Ŭ·¡½º ÀÇ °è½Âµµ°¡ ³ª¿ÍÀÖ´Ù.. ## ½ºÆ®¸² Ãâ·Â ## * cout°ú << ¿¬»êÀÚ coutÀº Ãâ·ÂÀ» ´ã´çÇÏ´Â °´Ã¼À̸ç, << ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÑ´Ù. << ¿¬»êÀÚ´Â Çì ´õÆÄÀÏÀÎ iostream.h¿¡ ÀÇÇؼ­ ¿À¹ö·ÎµùµÇ¾î Ãâ·ÂÀÇ ±â´ÉÀ» ¹ßÈÖÇÑ´Ù. (¿ø ¾î´Â insertion operatorÀε¥.. ¿Ö insertion(»ðÀÔ)ÀÇ ÀǹÌÀÎÁö µµÀúÈ÷ ¸ð ¸£°ÚÀ½~) coutÀº º¯¼öµéÀÇ µ¥ÀÌÅÍÇüÀ» ½º½º·Î ¾Ë¾Æ¼­ ÆÇ´ÜÇÏ¿© Àû´çÈ÷ Ãâ·Â ÇÑ´Ù.. Çü½Ä) cout << º¯¼ö << º¯¼ö << ...; * coutÀÇ ¸â¹öÇÔ¼öµé ¨ç put ÇÔ¼ö : ¹®ÀÚÇü µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù. ÇÁ·ÎÅäŸÀÔ) ostream & ostream::put(char ch); »ç¿ë¹ý) cout.put(char); ¨è writeÇÔ¼ö : ¹®ÀÚ¿­ µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù. ÇÁ·ÎÅäŸÀÔ) ostream & ostream::write(const char *str, int size); ostream & ostream::write(const unsigned char *str, int size); »ç¿ë¹ý) cout.write(str,size); Ãâ·ÂÀº º¸Åë ¹®ÀÚ¿­ Àüü¸¦ ÇϹǷÎ, sizeÀÚ¸®¿¡´Â ´ë°Ô sizeof(str)ÀÌ ¿À °Ô µÇ¾îÀÖ´Ù. ¨é Æø(width) ÁöÁ¤, fillÁöÁ¤ ´ÙÀ½ÀÇ ¸â¹öÇÔ¼öµéÀ» ÀÌ¿ë.. cout.width(ÁöÁ¤ÇÏ°íÀÚ ÇÏ´Â Æø); cout.fill(fill¹®ÀÚ); // ÆøÀ» ÀüºÎ ÀÌ ¹®ÀڷΠä¿ò width´Â iosŬ·¡½º ¾È¿¡ ÀÖÀ¸¹Ç·Î, ´ÙÀ½°ú °°À̵µ »ç¿ë°¡´É. int ios::width(int w); // ÆøÀ» w·Î Á¤ÇÏ°í °ú°ÅÀÇ ÆøÀ» ¸®ÅÏ int ios::width(); // ÇöÀçÀÇ ÆøÀ» ¸®ÅÏ ÀÌ °ÍÀº ´ÜÁö 1ȸ¿ëÀÏ »ÓÀÌ´Ù. ÇϳªÀÇ µ¥ÀÌÅ͸¦ Ãâ·ÂÇÒ ¶§¸¶´Ù Æø°ú fill Àº ÃʱⰪÀÌ µÇ¹ö¸®¹Ç·Î, ¸Å¹ø ´Ù½Ã ÁöÁ¤ÇØÁÖ¾î¾ß ÇÑ´Ù. ÇʵåÀÇ ÆøÀÌ µ¥ÀÌ ÅÍÀÇ ±æÀ̺¸´Ù ÀûÀ¸¸é ÆøÀ» ¹«½ÃÇÏ°í ÀÚ¸®³ÑħÀÌ ¹ß»ýÇÑ´Ù. (CÀÇ printfÇÔ ¼ö¿Í µ¿ÀÏ) * Ãâ·Â Æ÷¸ËÀÇ ÁöÁ¤ iosŬ·¡½º¿¡´Â ÇöÀçÀÇ Æ÷¸Ë»óŸ¦ ÁöÁ¤ÇÏ°í ÀÖ´Â Ç÷¡±×µéÀÌ ÀÖ´Ù. enum{ skipws = 0x0001, // skip whitspace on input left = 0x0002. // left-adjust output right = 0x0004, // right-adjust output internal = 0x0008, // padding after sign or base indicator dec = 0x0010, // decimal conversion oct = 0x0020, // octal conversion hex = 0x0040, // hexadecimal conversion showbase = 0x0080, // use base indicaor on output showpoint = 0x0100, // force decimal point(floating output) uppercase = 0x0200, // upper-case hex output showpos = 0x0400, // add '+' to positive scientific = 0x0800, // use 1.234E2floating notaion fixed = 0x1000, // use 123.45 floating notaion unitbuf = 0x2000, // flush all streams after insertion stdio = 0x4000, // flush stdout, stderr after insertion } À̵éÀ» Á¶ÀÛÇϱâ À§Çؼ­´Â ´ÙÀ½ ¸â¹öÇÔ¼öµéÀ» ÀÌ¿ëÇÑ´Ù. ¨ç flags ÇÔ¼ö long ios::flags(); // Æ÷¸Ë»óÅÂÇ÷¢À» Àд´Ù. long ios::flags(long f); // Æ÷¸Ë»óÅÂÇ÷¢À» ¼¼Æ®ÇÑ´Ù. flags¸¦ ÀÌ¿ëÇÏ¿© ¼¼Æ®ÇÏ´Â °æ¿ì ºñÆ®¿¬»êÀÚ¸¦ ÀÌ¿ëÇÑ´Ù. cout.flags(cout.flags()&~ios::skipws); //swipws off cout.flags(cout.flags()|ios::uppercase); //uppercase on ¨è setf/unsetf ÇÔ¼ö setf/unsetf´Â Ç÷¡±×¸¦ set/unset½ÃÅ°´Â ÇÔ¼öÀÌ´Ù. cout.setf(ios::skipws); // skipws on cout.unsetf(ios::uppercase); // uppercase off setfÇÔ¼ö´Â ÀÎÀÚ°¡ 1°³ÀÌ³Ä 2°³À̳Ŀ¡ µû¶ó¼­ °¢±â ´Ù¸¥ ±â´ÉÀ» ¼öÇàÇÑ ´Ù. (´ÙÇü¼º(polymorphism)ÀÇ ¿ø¸®) ÀÌ·¯ÇÑ °æ¿ì¿¡´Â ´ÙÀ½°ú °°ÀÌ.. long ios::setf(long s1,long s2); s2ÀÇ °ª¿¡ 1ÀÎ ºñÆ®ÀÇ °ªÀ» s1ÀÇ ÇØ´çºñÆ®¿¡¼­ Àоî¿Â´Ù. s2´Â ¼öÁ¤µÇ´Â ºñÆ®, s1Àº ¼öÁ¤µÉ °Í¿¡ ´ëÇÑ Áö½ÃÀÌ´Ù. ¨é Æ÷¸Ë¼Ó¼ºÁß¿¡´Â µ¿½Ã¿¡ ¾²ÀÏ ¼ö¾ø´Â °ÍµéÀÌ Àִµ¥, ÀÌ·² °æ¿ì¸¦ À§ÇØ ios¿¡´Â ´ÙÀ½°ú °°Àº enum»ó¼ö°¡ ¸¶·ÃµÇ¾î ÀÖ´Ù. basefiled = dec | oct | hex adjustfield = left|reght | center floatfield = scientific | fixed basefieldÀÇ °æ¿ì °¢ ºñÆ®°¡ ¸ðµÎ 1·Î ¼¼Æ®µÇ¾î ÀÖ´Ù. ÀÌ°ÍÀ» ÀÌ¿ëÇؼ­ 10Áø¼ö¸¦ ¼±ÅÃÇÑ´Ù¸é cout.setf(ios::dec,ios::basefield);µî°ú °°Àº ¹æ¹ýÀ¸·Î. * Á¶ÀÛÀÚ(manipulator) iomanip.h¾ÈÀÇ Á¶ÀÛÀÚ(manipulator)µéÀ» ÀÌ¿ëÇÏ¸é ºñ±³Àû ½±°Ô Ãâ·Â Æ÷¸Ë À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. Á¶ÀÛÀÚ¶õ ÀÔÃâ·Â Çü½ÄÀ» Á¶ÀÛÇÏ °ÍµéÀÌ´Ù. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ Á¶ÀÛÀÚ µ¿ÀÛ ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ dec 10Áø¼ö·Î ÀÔÃâ·ÂÀ» ÇàÇÔ hex 16Áø¼ö·Î ÀÔÃâ·ÂÀ» ÇàÇÔ oct 8Áø¼ö·Î ÀÔÃâ·ÂÀ» ÇàÇÔ endl °³Ç๮ÀÚ¸¦ Ãâ·Â('\n') ends NULL¹®ÀÚ¸¦ Ãâ·Â('\0') ws È­ÀÌÆ®½ºÆäÀ̽º Á¦°Å flush ÇöÀç ½ºÆ®¸²ÀÇ ³»¿ëÀ» ºñ¿ò (¹öÆÛ³»¿ëÀÇ °­Á¦Àû Ãâ·Â) setbase(int) Áø¹ýÀ» ÁöÁ¤, (n=8,10,16) ÀÌ¿ÜÀÇ ¼ýÀÚ°¡ ¿À¸é 10Áø¼ö·Î °¡Á¤ÇÔ resetiosflags(long n) n¿¡¼­ ÁöÁ¤ÇÑ ºñÆ®¸¦ resetÇÑ´Ù. setiosflags(long n) n°ú x_flags¸¦ OR½ÃÄÑ n¿¡¼­ ÁöÁ¤ÇÑ ºñÆ®¸¦ setÇÑ´Ù. setfill(char) cout.fill(char)°ú µ¿ÀÏ setw(int) cout.width(int)¿Í µ¿ÀÏ setprecision(int) ½Ç¼öÀÇ À¯È¿¼ýÀÚ ÀÚ¸®¼ö ÁöÁ¤ ÁöÁ¤ÇÑ À¯È¿¼ýÀÚ ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²µÊ ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ ÁÖÀÇ : ÀÎÀÚ°¡ ¾ø´Â °ÍµéÀº ()±âÈ£Á¶Â÷ ÇÏÁö ¾Ê´Â´Ù. setfill(), setw()ÇÔ¼öµîÀº cout.width(),fill¿¡ ºñÇØ >> ¿¬»êÀÚ¿Í ÇÔ²² ¾²ÀÏ ¼ö ÀÖ´Ù. ex) #include #include #include void main(void) { char str[]="string"; clrscr(); cout.setf(ios::left); cout << setw(10) << str << endl; cout.setf(ios::right); cout << setw(10) << str << endl; cout.setf(ios::hex); cout.setf(ios::showbase); cout.setf(ios::left); cout.setf(ios::uppercase); cout << setw(10) << 12 << endl; } ## ½ºÆ®¸² ÀÔ·Â ## * cin°ú >> ¿¬»êÀÚ cinÀº ÀÔ·ÂÀ» ´ã´çÇÏ´Â °´Ã¼À̸ç, >> ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÑ´Ù. >> ¿¬»êÀÚµµ ¿ª ¿À¹ö·ÎµùµÇ¾î ÀÔ·ÂÀÇ ±â´ÉÀ» ÇÑ´Ù. (¿ø¾î´Â extraction operator. À̰͵µ ¿ª½Ã ¾î°¼­ extraction(ÃßÃâ)ÀÇ ÀǹÌÀÎÁö µµÀúÈ÷ ¸ð¸£°ÚÀ½~) cinµµ cout°ú ¸¶Âù°¡Áö·Î µ¥ÀÌÅÍÇü¿¡ °ü°è¾ø´Â ÀÔ·ÂÀÌ °¡´ÉÇÏ´Ù. Çü½Ä) cin >> µ¥ÀÌÅÍ >> µ¥ÀÌÅÍ >> ...; scanfÇÔ¼ö¿Í ¸¶Âù°¡Áö·Î ¿©·¯°³¸¦ ÇѲ¨¹ø¿¡ ÀԷ¹ÞÀ» °æ¿ì °ø¹é, Åǹ®ÀÚµî ÀÇ È­ÀÌÆ® ½ºÆäÀ̽ºµéÀÌ ±¸ºÐ ±âÁØÀÌ µÈ´Ù. cinÀ¸·Î ¹®ÀÚ¿­À» ÀԷ¹ÞÀ» °æ ¿ì, ±æÀÌ¿¡ ´ëÇÑ ±ÔÁ¤ÀÌ ¾øÀ¸¹Ç·Î °¡´ÉÇÑ »ç¿ëÇÏÁö ¸»°í ´ÙÀ½ÀÇ ¸â¹öÇÔ¼öµé À» ÀÌ¿ëÇÑ´Ù. * cinÀÇ ¸â¹öÇÔ¼öµé ¨ç getÇÔ¼ö coutÀÇ put°ú ¹Ý´ëµÇ´Â ÇÔ¼öÀ̸ç, getÀº ¹®ÀÚ³ª ¹®ÀÚ¿­À» ÀԷ¹޴ ÇÔ¼öÀÌ´Ù. ¹®ÀÚÀÇ °æ¿ì : get(char &ch); ¹®ÀÚ¿­ÀÇ °æ¿ì : get(char *s, int size, int ter='\n'); s´Â ÀúÀåÇÒ º¯¼ö, size´Â ÀÔ·ÂÀÇ ÃÖ´ë±æÀÌ, ter´Â ÀÔ·ÂÀ» ÀÌ ¹®ÀÚ¸¦ ¸¸³ª ¸é Á¾°áÇ϶ó´Â ÀǹÌÀÌ´Ù. º¸´Ù½ÃÇÇ µðÆúÆ® °ªÀº ¶óÀÎÇǵåÀÌ´Ù. ¨è read(char *s, int size) coutÀÇ write¿Í ¹Ý´ëµÇ´Â ÇÔ¼öÀ̸ç, ¹®ÀÚ¿­À» ÀÔ·Â¹Þ¾Æ s¿¡ ÀúÀåÇ쵂 ÀÔ·Â ±æÀÌÀÇ ÃÖ´ëÄ¡´Â size·Î Á¦ÇѽÃŲ´Ù. ## »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅÍÇüÀÇ ÀÔÃâ·Â ## C++¿¡¼­´Â »ç¿ëÀÚÁ¤ÀÇ µ¥ÀÌÅÍÇüµµ ÀÔÃâ·Â Æ÷¸ËÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. »ç¿ëÀÚ Á¤ÀÇ ÀÚ·áÇü¿¡ ´ëÇؼ­ <<, >>¿¬»êÀÚ¸¦ ¿À¹ö·Îµù½ÃÄÑÁÖ¸é µÈ´Ù. <<, >>¿¬»êÀÚ´Â T¶ó´Â ÀÚ·áÇü¿¡ ´ëÇؼ­ ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù. friend ostream & operator <<(ostream &o,T &x); //½ºÆ®¸² Ãâ·Â friend istream & operator >>(istream &i,T &x); //½ºÆ®¸² ÀÔ·Â ex) #include class ACCESS { protected: int hour, min, sec; public: ACCESS() { } ACCESS(int h, int m, int s) { hour = h; min = m; sec = s; } friend ostream & operator <<(ostream &clock, ACCESS &T); friend istream & operator >>(istream &clock, ACCESS &T); }; // friend·Î ¼±¾ðÇØ¾ß cout, cinµîÀÌ ¸â¹ö¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. ostream & operator << (ostream &clock, ACCESS &T) { clock << T.hour << ':' << T.min << ':' << T.sec << endl; return(clock); } istream & operator >> (istream &clock, ACCESS &T) { clock >> T.hour >> ':' >> T.min >> ':' >> T.sec; return(clock); } void main(void) { ACCESS T1; cout << "Input a time :"; cin >> T1; cout << "Time is " << T1 << endl; } ## Á¶ÀÛÀÚ ¸¸µé¾î ¾²±â ## CÀÇ \n,\tµî°ú °°Àº Á¶ÀÛÀڵ鵵 C++¿¡¼­ ¸¸µé¾î ¾µ¼ö°¡ ÀÖ´Ù. ÀÌ¹Ì ¸¸µé¾î Áø Á¶ÀÛÀڷδ endl,ends,dec,oct,hexµîÀÌ ÀÖ´Ù. ´ÙÀ½ ¿¹ Çϳª¸¸ Àß »ìÆ캸 ¸é ¿ä·ÉÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù. #include ostream & tab(ostream& o) { o << "\t"; return(o); //»©¸ÔÀ¸¸é Àý´ë ¾ÈµÊ.. } void main(void) { int a=100; cout << "a=" << tab << a << endl; } ## ÆÄÀÏ ÀÔÃâ·Â ## ÆÄÀÏÀÔÃâ·ÂÀ» Çϱâ À§Çؼ­ C++¿¡¼­´Â ´ÙÀ½°ú °°Àº Ŭ·¡½ºµéÀ» Á¦°øÇÏ°í ÀÖ ´Ù. À̵éÀ» »ç¿ëÇϱâ À§Çؼ­´Â fstream.h¸¦ include½ÃÄÑ¾ß ÇÑ´Ù. ofstream : ostream¸¦ °è½ÂÇÑ Ãâ·ÂÀ» À§ÇÑ ÆÄÀÏŬ·¡½º ifstream : istream¸¦ °è½ÂÇÑ Ãâ·ÂÀ» À§ÇÑ ÆÄÀÏŬ·¡½º iofstream :iostream¸¦ °è½ÂÇÑ Ãâ·ÂÀ» À§ÇÑ ÆÄÀÏŬ·¡½º ÀÌ µéÀº ostream, istreamÀ¸·Î °è½ÂµÇ¾îÁø¸¸Å­, iostreamÀÌ Á¦°øÇÏ´Â °´Ã¼ ¿Í ¸â¹öÇÔ¼öÀÇ ±â´Éµé°ú ´ëºÎºÐ °°°Å³ª À¯»çÇÏ´Ù. ÆÄÀÏ ¿ÀÇÂÀ¸·Î »ý¼ºµÈ °´ ü´Â cout, cin°ú µ¿µîÇϸç, put, getÇÔ¼öµéµµ °è½ÂµÇ¾ú±â ¶§¹®¿¡ text ÆÄ ÀÏÀÇ °æ¿ì 'object << "This is a file";'µîÀÇ ¹æ¹ýÀ¸·Î ÀÔÃâ·Â ½Ãų ¼ö ÀÖ ´Ù. ¨ç ÆÄÀÏÀÇ ¿ÀÇ ÆÄÀÏÀÇ ¿ÀÇÂÀº »ý¼ºÀڷεµ °¡´ÉÇÏ°í, ¸â¹öÇÔ¼öÀÎ openÀ¸·Îµµ °¡´ÉÇÏ´Ù. »ý¼ºÀÚ·Î ¿ÀÇÂÇϱâ À§Çؼ­´Â ifstream °´Ã¼À̸§("ÆÄÀÏÀ̸§"); ofstream °´Ã¼À̸§("ÆÄÀÏÀ̸§"); openÀ» »ç¿ëÇÒ·Á¸é ofstream(¶Ç´Â ifstream) °´Ã¼¸í; °´Ã¼¸í.open("ÆÄÀÏÀ̸§"); ÀÌ·¸°Ô »ç¿ëÇÑ´Ù. °´Ã¼À̸§Àº ÆÄÀÏÀ̸§À¸·Î ÁöÁ¤ÇØÁØ ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê ´Â °æ¿ì 0À» ¹ÝȯÇÑ´Ù. µû¶ó¼­, ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ¸é ¾ÆÁÖ À¯¿ëÇÏ´Ù. if (file1) { ... } // Á¤»óó¸® if (!file1) { ... } // ¿¡·¯Ã³¸® ¨è ÆÄÀÏ ¿ÀÇ ¸ðµå ifstreamÀÇ openÇÔ¼öÀÇ ÇÁ·ÎÅäŸÀÔ: void open(char* name,int = ios::in,int prot = filebuf::openprot); ofstreamÀÇ openÇÔ¼öÀÇ ÇÁ·ÎÅä ŸÀÔ: void open(char* name,int = ios::out,int prot = filebuf::openprot); ¿©±â¼­ µÎ¹ø° ÀÎÀÚ°¡ ¿ÀǸðµå¸¦ °áÁ¤Çϸç, ´ÙÀ½ÀÇ iosŬ·¡½º¿¡ Á¤ÀǵǾî ÀÖ´Â enum°ªÀ» ÀÌ¿ëÇÑ´Ù. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ »ó¼ö°ª ³»¿ë ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ ios::in ÀÔ·ÂÀü¿ë ¸ðµå ios::out Ãâ·ÂÀü¿ë ¸ðµå ios::ate ÆÄÀÏÀÇ ¿ÀÇ°ú µ¿½Ã¿¡ FP(file pointer)¸¦ ³¡ºÎºÐÀ¸·Î ios::app ±âÁ¸ÀÇ ÆÄÀϵڿ¡ ¿¬°á (append) ios::trunc Ãâ·Â¸ðµå¿¡¼­ ÆÄÀÏÁ¸Àç½Ã ±× È­ÀÏÀ» Áö¿ì°í »õ·Î »ý¼º ios::nocreate Ãâ·Â¸ðµå¿¡¼­ Á¸ÀçÇÏ´Â È­Àϸ¸ ¿ÀÇ ios::noreplace noncreate¿Í µ¿ÀÏ. ±×·¯³ª ate³ª app ÁöÁ¤½Ã¾Ö´Â openÀÌ µÈ´Ù. ios::binary ÀÌÁø ÆÄÀÏ ¸ðµå·Î ¿ÀÇ ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ °¢ »ó¼öµéÀº | ¿¬»êÀÚ·Î OR½ÃÅ°´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ¨é ÆÄÀÏÀÇ ´ÝÀ½ °´Ã¼¸í.close(); ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ex) ÅؽºÆ® ÆÄÀϺ¹»ç ÇÁ·Î±×·¥ #include void main(void) { ifstream FILE1("SOURCE.CAP"); // »ý¼ºÀÚ if(!FILE1) { cout << "Can not open file" << '\a' << endl; exit(1); } ofstream FILE2; FILE2.open("TARGET.CAP"); // ¸â¹öÇÔ¼ö if(!FILE2) { cout << "Can not open file" << '\a' << endl; exit(1); } char ch; while(FILE2 && FILE2.get(ch)) FILE2.put(ch); FILE1.close(); FILE2.close(); } ¨ê FP(file pointer)ÀÇ Á¦¾î C¿Í´Â ´Þ¸® C++Àº FP°¡ 2°³ À־ °¢°¢ Àбâ¿Í ¾²±â¸¦ µ¶¸³ÀûÀ¸·Î Á¦¾îÇÑ ´Ù. ÀÌ FP¿¡ °üÇØ ´ÙÀ½°ú °°Àº ÇÔ¼öµéÀÌ Á¦°øµÈ´Ù. FPÀÇ À§Ä¡´Â iostream.h ÀÇ streamposÇü µ¥ÀÌÅÍÀÌ´Ù. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ tellg(); // ÇöÀç ÀԷ¿ë getÀ§Ä¡¸¦ ¾ò´Â´Ù. tellp(); // ÇöÀç Ãâ·Â¿ë putÀ§Ä¡¸¦ ¾ò´Â´Ù. seekg(cp); // cpÀÇÀ§Ä¡·Î ÀԷ¿ë FP¸¦ À̵¿ seekp(cp); // cpÀÇ À§Ä¡·Î Ãâ·Â¿ë FP¸¦ À̵¿ seekg(cp, dir) // ÀԷ¿ë FP¸¦ dirÀÌ ÁöÁ¤ÇÏ´Â ¹æÇâÀ¸·Î ÇöÀçÀ§Ä¡¿¡¼­ cp¸¸Å­ »ó´ëÀûÀ¸·Î À̵¿ seekp(cp, dir) // Ãâ·Â¿ë FP¸¦ dirÀÌ ÁöÁ¤ÇÏ´Â ¹æÇâÀ¸·Î ÇöÀçÀ§Ä¡¿¡¼­ cp¸¸Å­ »ó´ëÀûÀ¸·Î À̵¿ ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ ¿©±â¼­ dirÀÇ °ªÀº iosŬ·¡½º¿¡ Á¤ÀǵǾî ÀÖÀ¸¸ç ´ÙÀ½°ú °°´Ù. enum seek_dir {beg=0,cur=1,end=2}; ex) inout.seekg(5,ios::beg); // ½ÃÀÛÀ§Ä¡¿¡¼­ 5¹ÙÀÌÆ® µÚ·Î FP¸¦ À̵¿ Áï, CÀÇ tell(), seek()ÇÔ¼öµî¿¡¼­ »ç¿ëÇÏ´ø SEEK_SET, SEEK_CUR, SEEK_EN D »ó¼ö¿Í ¿ÏÀüÈ÷ Àǹ̰¡ µ¿ÀÏÇÏ´Ù. C++¿¡¼­´Â 2°³ÀÇ FP´öºÐ¿¡ ÆÄÀÏÀÔÃâ·ÂÀ» µ¿½Ã¿¡ ÇàÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ÀÌ ·² °æ¿ì¿¡´Â fstreamÇÔ¼ö¸¦ ÀÌ¿ëÇÑ´Ù. ex) fstream inout("ACCESS.CAP",ios::in|ios::out); inout << a; inout >> b; ¨ë ¿¡·¯ÀÇ Ã¼Å© C++¿¡¼­ ÀÔÃâ·ÂµµÁß ¹ß»ýÇÏ´Â ¿¡·¯´Â iosŬ·¡½ºÀÇ ¸â¹öÀÎ status¿¡ Ç÷¡±× ÇüÅ·ΠÀúÀåµÈ´Ù. // stream status bias enum io_state{ goodbit = 0x00, // no bis set : all is ok eofit = 0x01, // at end of file failbit = 0x02, // last I/O operation failed badbit = 0x04, // invalid operation attempted hardfail= 0x80 // unrecoverable error }; ÀÔÃâ·ÂµµÁß ¿¡·¯°¡ ¹ß»ýÇß´Ù¸é ÇØ´çÇÏ´Â ºñÆ®´Â 1ÀÌ µÇ°í, ¿¡·¯º¹±¸Àü±îÁö ´Â ¸ðµç ÀÔÃâ·ÂÀÌ ¹«½Ã°¡ µÈ´Ù. ¨ì ¿¡·¯ÀÇ º¹±¸ À§ÀÇ ¹®Á¦Á¡¶§¹®¿¡ ¿¡·¯ ¹ß»ýÈÄ¿¡´Â ¹Ýµå½Ã ¿¡·¯ »óŸ¦ º¹±¸½ÃÄÑÁà¾ß ÇÑ ´Ù. ÀϹÝÀûÀ¸·Î clear()¸¦ È£ÃâÇÏ¸é ¿¡·¯°¡ º¹±¸µÈ´Ù. ¿¡·¯º¹±¸ 󸮿¡ °üÇؼ­ ´ÙÀ½ÀÇ ÇÔ¼öµéÀÌ Á¦°øµÈ´Ù. À̵éÀº ¸ðµÎ iosŬ·¡ ½º³»ÀÇ ¸â¹öÇÔ¼öµéÀÌ´Ù. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ ÇÔ¼ö ±â´É ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ int rdstate(); ÇöÀçÀÇ ¿¡·¯»óŸ¦ ¾ò´Â´Ù. int clear(int=0); ÇöÀçÀÇ ¿¡·¯»óŸ¦ ¼³Á¤ int clear(int=0); ÇöÀçÀÇ ¿¡·¯»óŸ¦ ¼³Á¤ int good(); ¿¡·¯°¡ ¾øÀ¸¸é 1À» ¸®ÅÏ int eof(); ÆÄÀÏÀÇ ³¡À̸é 1À» ¸®ÅÏ int fail(); ¿¡·¯°¡ ¹ß»ýÇϸé 1À» ¸®ÅÏ int bad(); ½É°¢ÇÑ ¿¡·¯, Áï badbitÀ̳ª hardbitÁß Çϳª¶óµµ setµÇ¾î ÀÖ´Ù¸é 1À» ¸®ÅÏ ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ ex) ifstream FILE("TEST.CAP"); FILE >> data; if (ios::bad()) exit(1); else ... . . PRESENTED by . * __ ____ ____. ____ ____* ____ the / |/ ___|/ ___|| ___|/ _*|/ __| registered / / | |___ |___ | _| \_*_ \\___ \ trademark of /_/|_|\____|\____||____*|____/|____/ MicroSoft Inc. -1995- . * * * Ãâ·ÂÀÌ ³¡³µ½À´Ï´Ù. [Enter]¸¦ ´©¸£½Ê½Ã¿À.