[C++]2ºÎ°­ÁÂ(62)<--ÆÄÀÏ ÀÔÃâ·Â





********************************************************
********************************************************
6-4 ÆÄÀÏ ÀÔÃâ·Â


I/O ½ºÆ®¸²À» »ç¿ëÇØ console(È­¸é,Å°º¸µå)·Î ÀÔÃâ·ÂÀ» ÇÒ ¶§´Â cout°ú cinÀ»
»ç¿ëÇÏ¿´´Ù. cout°ú cinÀº °¢°¢ istream Ŭ·¡½º¿Í ostream Ŭ·¡½º ¼Ò¼ÓÀ̸ç ÀÌ
Ŭ·¡½º¿¡ ÀÇÇØ ¸¸µé¾îÁø °´Ã¼(object)ÀÌ´Ù. Áï cin°ú coutÀÇ Æ¯¼ºÀº ±×µéÀÌ ¼Ò
¼ÓµÇ¾î Àִ Ŭ·¡½º·ÎºÎÅÍ ¹ÞÀº °ÍÀÌ´Ù.
I/O ½ºÆ®¸²À¸·Î ÆÄÀÏ ÀÔÃâ·ÂÀ» Çϱâ À§Çؼ­´Â cin,cout µîÀ» ¾µ ¼ö ¾ø°í, Á¶
±Ý ´õ ±¸Á¶°¡ º¹ÀâÇÑ Å¬·¡½º¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. C++¿¡¼­´Â ÆÄÀÏ ÀÔÃâ·ÂÀ» À§ÇØ
µÎ °³ÀÇ Å¬·¡½º, ifstream°ú ofstreamÀ» Á¦°øÇϸç ÀÌ Å¬·¡½º¿¡ ÆÄÀÏ ÀÔÃâ·Â¿¡
°üÇÑ ÇÔ¼öµéÀÌ Á¤ÀǵǾî ÀÖ´Ù. ÀÌ Å¬·¡½ºµéÀÌ Á¤ÀǵǾî ÀÖ´Â Çì´õ ÆÄÀÏÀº fstr
eam.hÀ̸ç ÀÌ Çì´õ ÆÄÀÏÀ» °üÂûÇغ¸¸é °¢°¢ istream°ú ostreamÀ¸·ÎºÎÅÍ ÆÄ»ýµÇ
¾î ³ª¿Â Ŭ·¡½ºÀÓÀ» ¾Ë ¼ö ÀÖ´Ù.
µû¶ó¼­ istream, ostream¿¡¼­ ÆÄ»ýµÈ ÀÌ Å¬·¡½ºµéÀº cin,cout¿¡¼­ »ç¿ëÇÏ´Â <<
¿¬»êÀÚ, >> ¿¬»êÀÚ ¹× ¸ðµç ÀÔÃâ·Â ÇÔ¼öµéÀ» °è½Â¹Þ¾Æ ±×´ë·Î ¶È°°Àº ¹æ¹ýÀ¸·Î
»ç¿ëÇÒ ¼ö ÀÖ´Ù. °°Àº ¿¬»êÀÚ¶óµµ cin,cout µîÀÇ °´Ã¼¿¡ »ç¿ëµÇ¸é console·Î
ÀÔÃâ·ÂÀÌ ÀÌ·ç¾îÁö°í ifstream, ofstream Ŭ·¡½ºÀÇ °´Ã¼¿¡ »ç¿ëµÇ¸é ÆÄÀÏ·Î ÀÔ
Ãâ·ÂÀÌ ÀÌ·ç¾îÁø´Ù.
ÆÄÀÏ ÀÔÃâ·ÂÀ» À§Çؼ­´Â ¿ì¼± ifstream, ofstreamÀÌ Á¤ÀǵǾî ÀÖ´Â fstream.h
¸¦ Æ÷ÇÔ½ÃÄÑ ÁÖ¾î¾ß ÇÔÀº ¹°·ÐÀÌ°í À̶§ iostream.h´Â fstream.h³»¿¡¼­ includ
eÇϹǷΠfstream.h¸¦ includeÇß´Ù¸é ±»ÀÌ Æ÷ÇÔ½ÃÄÑ ÁÖÁö ¾Ê¾Æµµ µÈ´Ù. ¹°·Ð io
stream.h¸¦ Æ÷ÇÔ½ÃÄÑ ÁÖ´õ¶óµµ Á¶°ÇºÎ ÄÄÆÄÀÏ Áö½ÃÀÚ¿¡ ÀÇÇØ µÎ ¹ø ÄÄÆÄÀϵÇÁö
´Â ¾Ê´Â´Ù. Çì´õ ÆÄÀÏÀ» Æ÷ÇÔ½ÃŲ ÈÄ¿¡´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ÆÄÀÏ ÀÔÃâ·Â
°´Ã¼¸¦ Á¤ÀÇÇØ ÁÖ¾î¾ß ÇÑ´Ù.

ofstream °´Ã¼ À̸§("ÆÄÀÏ À̸§");
ifstream °´Ã¼ À̸§("ÆÄÀÏ À̸§");

ofstreamÀº ¾îµð±îÁö³ª Ŭ·¡½º À̸§ÀÏ »Ó ÀÌ Å¬·¡½º°¡ °¡Áø µ¥ÀÌÅÍ¿Í ÇÔ¼ö°¡
±¸Ã¼ÀûÀ¸·Î ½ÇÇöµÇ±â À§Çؼ­´Â ¹Ýµå½Ã object°¡ ÀÖ¾î¾ß ÇÑ´Ù. cin, cout µîµµ
¹°·Ð i(o)stream_withassign Ŭ·¡½º·ÎºÎÅÍ ¸¸µé¾îÁø objectÀ̸ç Çì´õ ÆÄÀÏ¿¡
ÀÌ¹Ì ´ÙÀ½°ú °°ÀÌ ¸¸µé¾îÁ® Á¦°øµÈ´Ù.

extern istream_withassign _Cdecl cin;
extern ostream_withassign _Cdecl cout;
extern ostream_withassign _Cdecl cerr;
extern ostream_withassign _Cdecl clog;

cin, cout µîÀº »ç½Ç Çϳª ÀÌ»óÀÇ °´Ã¼°¡ ´õ ÀÌ»ó ÇÊ¿ä°¡ ¾ø±â ¶§¹®¿¡ ¹Ì¸®
¸¸µé¾î ³õ°í »ç¿ëÇÏ´õ¶óµµ º°µµ·Î ¸¸µé ÇÊ¿ä°¡ ¾øÀ¸¸ç ¹®Á¦°¡ µÉ °Íµµ ¾ø´Ù.
ÇÏÁö¸¸ ÆÄÀÏ ½ºÆ®¸² °´Ã¼´Â ÇÊ¿ä¿¡ µû¶ó ¿©·¯ °³°¡ µ¿½Ã¿¡ ÇÊ¿äÇϱ⵵ ÇϹǷÎ
°´Ã¼¸¦ »ý¼ºÇÏ´Â ÀÏÀÌ ÀüÀûÀ¸·Î »ç¿ëÀÚ¿¡°Ô ´Þ·Á ÀÖ´Ù. ´ÙÀ½¿¡ ÆÄÀÏ ½ºÆ®¸²À»
»ç¿ëÇÏ´Â ¿¹Á¦¸¦ º¸ÀÚ.

#include <fstream.h>
void main()
{
ofstream tfile("test.tmp");
tfile << "test string";
tfile.close();
}

ÀÌ ¿¹Á¦°¡ ÇÏ´Â ÀÏÀ̶ó°í´Â "test string"À̶ó´Â ¹®ÀÚ¿­À» ´ãÀº test.tmp¶ó´Â
ÆÄÀÏÀ» ¸¸µå´Â ÀÏÀÌ ÀüºÎÀÌ´Ù. ¸ÕÀú ofstreamÇüÀÇ °´Ã¼ tfileÀ» ¸¸µé¾î ÆÄÀÏ
Ãâ·ÂÀ» ÁغñÇÑ´Ù. tfileÀº ÆÄÀÏ ÀÔÃâ·Â¿¡ ÇÊ¿äÇÑ ¸ðµç µ¥ÀÌÅÍ¿Í ÇÔ¼öµéÀ» °¡Áö
°í ÀÖ´Â °´Ã¼À̸ç À̸§À» ¿ì¸® ¸¶À½´ë·Î Á¤ÇÒ ¼ö ÀÖÀ» »Ó cin, cout µî°ú °³³ä
»ó µ¿µîÇÏ´Ù. tfile °´Ã¼¸¦ ¸¸µé ¶§ »ý¼ºÀÚÀÇ Àμö·Î "test.tmp"¶ó´Â ÆÄÀÏ ÀÌ
¸§À» ÁÖ¾î ÀÌ ÆÄÀÏÀ» openÇϵµ·Ï ÇÏ¿´´Ù. test.tmp°¡ µð½ºÅ©»ó¿¡ ¾øÀ¸¸é »ý¼º
ÀÌ µÈ´Ù.
ÀÌÁ¦ºÎÅÍ tfileÀº test.tmp¸¦ ´ëÇ¥Çϸç tfile¿¡ °¡ÇØÁö´Â ¸ðµç Ãâ·ÂÀº test.t
mp·Î °¡°Ô µÈ´Ù.

tfile << "test string";

ÀÌ ¿¬»ê¿¡ ÀÇÇØ ¹®ÀÚ¿­ÀÌ tfile °´Ã¼·Î º¸³»Áö¸ç, °á±¹ test.tmp·Î °¡°Ô µÈ´Ù.
<< ¿¬»êÀÚ°¡ ÆÄÀÏ·Î µ¥ÀÌÅ͸¦ Ãâ·ÂÇÏ´Â ¿¬»êÀÚÀÌ´Ù. ¹®ÀÚ¿­À» ÆÄÀÏ·Î Ãâ·ÂÇÑ
ÈÄ ¸â¹öÇÔ¼ö close¸¦ È£ÃâÇÏ¿© ÆÄÀÏÀ» ´Ý°í ÆÄÀÏ ÀÔÃâ·ÂÀ» Á¾°áÇÑ´Ù. Ŭ·¡½º o
fstreamÀÇ »ý¼ºÀÚ´Â ¸ðµÎ 6°³°¡ ÀÖÀ¸¸ç ÀÌÁß ¸¹ÀÌ »ç¿ëµÇ´Â °ÍÀº ´ÙÀ½ µÎ °¡Áö
ÀÌ´Ù.

* void ofstream()
¹«ÀÛÁ¤ °´Ã¼¸¸ ¸¸µç´Ù. À̶§ °´Ã¼¿Í ÇÔ²² openµÇ´Â ÆÄÀÏÀÌ ¾øÀ¸¹Ç·Î ÀÌÈÄ ¸â
¹öÇÔ¼ö openÀ» »ç¿ëÇØ ÆÄÀÏÀ» º°µµ·Î open½ÃÄÑ ÁÖ¾î¾ß ÇÑ´Ù.
* void ofstream(char *name, int mode=ios::out, int=filebuf::openprot);
°´Ã¼¸¦ ¸¸µê°ú µ¿½Ã¿¡ nameÀ¸·Î ÁöÁ¤µÈ ÆÄÀÏÀ» openÇÑ´Ù. openÇÒ ¶§ open ¸ð
µå¸¦ µÎ¹ø° Àμö·Î ÁöÁ¤À» ÇÒ ¼ö ÀÖÁö¸¸ µðÆúÆ® ÀμöÀÎ ios::out¸¦ ±×´ë·Î
¹Þ¾Æ µéÀÌ´Â ¹æ¹ýÀÌ º¸ÆíÀûÀÌ´Ù. ¾Õ ¿¹Á¦¿¡¼­ »ç¿ëÇÑ ¹æ¹ýÀÌ ¹Ù·Î ÀÌ ¹æ¹ýÀÌ
´Ù.

°´Ã¼¸¦ ¸¸µé ¶§ ÆÄÀÏÀ» openÇϰųª °´Ã¼¸¦ ¸¸µç ÈÄ µû·Î openÇϰųª ¾î´ÀÂÊÀ»
»ç¿ëÇϵçÁö ¸¶À½´ë·ÎÀÌÁö¸¸ Ưº°ÇÑ ÀÌÀ¯°¡ ¾øÀ¸¸é °´Ã¼ »ý¼º°ú ÇÔ²² ÆÄÀÏÀ» op
enÇÏ´Â °ÍÀÌ ´õ Æí¸®ÇÑ ¹æ¹ýÀÏ °ÍÀÌ´Ù. À§ ¿¹Á¦¸¦ ´ÙÀ½°ú °°ÀÌ °íÃÄ ½áµµ ¸¶Âù
°¡ÁöÀÌ´Ù.

#include <fstream.h>
void main()
{
ofstream tfile;
tfile.open("test.tmp");
tfile << "test string";
tfile.close();
}

ofstreamŬ·¡½º¿¡¼­ ÆÄÀÏÀ» ¿­°í ´Ý´Â ¸â¹ö ÇÔ¼ö open°ú close´Â ´ÙÀ½°ú °°´Ù.

void ofstream::open(char *name,int mode=ios::out,int=filebuf::openprot);
void ofstream::close(void);

open ÇÔ¼öÀÇ Àμö´Â ÆÄÀÏÀ» openÇÏ´Â »ý¼ºÀÚ¿Í ¶È°°´Ù. nameÀº ´ç¿¬È÷ openÇÒ
ÆÄÀϸíÀ̸ç mode´Â open ¸ðµå·Î ¿©±â¿¡´Â ´ÙÀ½°ú °°Àº ios Ŭ·¡½º¿¡ Á¤ÀǵǾî
ÀÖ´Â ¿­°Å »ó¼ö¸¦ »ç¿ëÇÏ¸é µÈ´Ù.

ios::in   Àб⸸ °¡´ÉÇÑ ÇüÅ·ΠÆÄÀÏÀ» ¿¬´Ù.
ios::out  ¾²±â¸¸ °¡´ÉÇÑ ÇüÅ·ΠÆÄÀÏÀ» ¿¬´Ù.
ios::ate  ÆÄÀÏÀ» openÇÔ°ú µ¿½Ã¿¡ FP¸¦ ÆÄÀÏÀÇ ³¡ºÎºÐÀ¸·Î ¿Å±ä´Ù.
ios::app  Ãâ·ÂÇÏ´Â µ¥ÀÌÅÍ°¡ Ç×»ó ÆÄÀÏÀÇ Á¦ÀÏ ³¡¿¡ ±â·ÏµÈ´Ù.
ios::trunc     openÇÏ°íÀÚ ÇÏ´Â ÆÄÀÏÀÌ ÀÌ¹Ì ÀÖÀ¸¸é Áö¿ö¹ö¸®°í ´Ù½Ã ¸¸µç´Ù.
ios::nocreate  openÇÏ°íÀÚ ÇÏ´Â ÆÄÀÏÀÌ ÀÌ¹Ì ÀÖÀ¸¸é ÆÄÀÏ openÀ» ÇÏÁö ¾ÊÀ¸¸ç
            ¿¡·¯¸¦ ¹ß»ý½ÃŲ´Ù. µð½ºÅ©ÀÇ ÆÄÀÏÀº Áö¿öÁöÁö ¾Ê´Â´Ù.
ios::noreplace nocreate¿Í µ¿ÀÏÇÏ´Ù. ´Ü ios::app ¸ðµå·Î openµÉ °æ¿ì´Â open
            ÀÌ µÈ´Ù.
ios::binary    ÀÌÁø ÆÄÀÏ ¸ðµå·Î °³¹æÇÑ´Ù. ÀÌÁø ÆÄÀÏ, ÅؽºÆ® ÆÄÀÏÀÇ Â÷ÀÌ´Â
            16Àå¿¡ »ó¼¼È÷ ¼³¸íµÇ¾î ÀÖ´Ù.

open ¸ðµå´Â C¸¦ Á¶±Ý Çغ» »ç¶÷ÀÌ¸é ¿Ø¸¸ÇÏ¸é °ÅÀÇ ¾Ë°í ÀÖÀ¸¸®¶ó »ý°¢ÇÏ°í
ª°Ô ¼³¸íÇÏ¿´´Ù. open ÇÔ¼ö¿¡¼­ ¸ðµåÀÇ µðÆúÆ®°¡ ios::out·Î µÇ¾î Àִµ¥ ofs
treamÀÌ Ãâ·Â¿ë ÆÄÀÏ ½ºÆ®¸² Ŭ·¡½ºÀ̱⠶§¹®ÀÌ´Ù. open ¸ðµå¸¦ µÎ °¡Áö ÀÌ»ó
»ç¿ëÇÒ °æ¿ì ios::out | ios::binary µî°ú °°ÀÌ ºñÆ® OR ¿¬»êÀÚ¸¦ »ç¿ëÇÔÀº C
ÀÇ °æ¿ì¿Í µ¿ÀÏÇÏ´Ù. À§ ¿¹Á¦¸¦ ÀÌÇØÇß´Ù¸é ÆÄÀÏ I/O ½ºÆ®¸²Àº ¹ÝÂë ÀÌÇØÇÑ °Í
ÀÌ´Ù.
´ÙÀ½Àº ifstreamÀ» »ç¿ëÇØ ÆÄÀÏ ÀÔ·ÂÀ» Çغ¸ÀÚ. DOSÀÇ type°ú ºñ½ÁÇÑ µ¿ÀÛÀ»
ÇÏ´Â, Áï ÅؽºÆ® ÆÄÀÏÀ» º¸¿©ÁÖ´Â ¿¹Á¦Àε¥ Á» ´õ ƯÀÌÇÏ°Ô ¸¸µé¾î º¸·Á°í Çà
¹øÈ£¸¦ ´Þµµ·Ï ÇÏ¿´´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ ¸®½ºÆ®´Â ´ÙÀ½ ¿¹Á¦¸¦ »ç¿ëÇÏ¿© Ãâ·ÂÇÑ °Í
ÀÌ´Ù.

1: #include <iostream.h>
2: #include <fstream.h>
3: #include <stdlib.h>
4: #include <iomanip.h>
5: void main(int argc,char *argv[])
6: {
7: ifstream infile;
8: char ch;
9: int i=1;
10: if (argc<1) exit(0);
11: infile.open(argv[1]);
12: cout << "  1: ";
13: if (!infile) cout << "Errore " << argv[1]  <<  '\n';14:
14:  while (infile.get(ch))
15:  {
16:    if (ch=='\n')        // °³Çà ¹®ÀÚ¸é °³Çà
17:    {
18:       i++;
19:       cout << endl << setw(3) << i << ": ";
20:    }
21:    else cout << ch;     //  ¾Æ´Ï¸é  ±×³É  ¹®ÀÚ  Ãâ·Â22:    
22:  }
23: infile.close();
24: }

À̾ °è¼ÓµË´Ï´Ù. ==============>>>>>>>


--------------------------------------------------------------------------------

    

 ´ÙÀ½