ÀÔÃâ·Â ½ºÆ®¸²À¸·Î ÆÄÀÏ ÀÔÃâ·Âµµ ÇÒ ¼ö Àִµ¥ C¿¡¼¿Í ¸¶Âù°¡Áö·Î ÆÄÀÏÀ̳ª ÄܼÖÀ̳ª ¾îÂ÷ÇÇ ½ºÆ®¸²À̶ó´Â ¸é¿¡¼´Â µ¿ÀÏÇϹǷΠ¶È°°Àº ¹æ¹ýÀ¸·Î ´Ù·ê ¼ö ÀÖ´Ù. C ¼öÁØ¿¡¼ ÆÄÀÏ ÀÔÃâ·ÂÀ» ÀÌ¹Ì ÇØ º» °æÇèÀÌ ÀÖ´Ù¸é ÀÌ Ç×ÀÇ ³»¿ëÀº Çü½Ä¸¸ Á¶±Ý ´Ù¸¥ Á¤µµ¿¡ ºÒ°úÇϹǷΠÆÄÀÏ ÀÔÃâ·Â °úÁ¤¿¡ ´ëÇÑ »ó¼¼ÇÑ ¼³¸íÀº »ý·«ÇÏ°í °£·«ÇÏ°Ô »ç¿ë¹ý Á¤µµ¸¸ ¼Ò°³Çϵµ·Ï ÇÑ´Ù.
¾ÕÂÊ ÀÔÃâ·Â ½ºÆ®¸²ÀÇ Å¬·¡½º °èÃþµµ¸¦ º¸¸é ÆÄÀÏ ÀÔÃâ·Â ½ºÆ®¸²ÀÎ basic_i(o)streamÀº Äֿܼë ÀÔÃâ·Â Ŭ·¡½º·ÎºÎÅÍ »ó¼ÓµÈ´Ù. µû¶ó¼ >>, << ¿¬»êÀÚ ¹× ¸â¹ö ÇÔ¼ö, Á¶Á¤ÀÚ µîÀ» ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´Ù¸¸ ÀÔÃâ·Â ´ë»óÀÌ ÆÄÀÏÀ̶ó´Â ¸Þ¸ð¸® ¿ÜºÎÀÇ ÀåÄ¡À̹ǷΠºü¸¥ ¾×¼¼½º¸¦ À§ÇØ ¿°í ´Ý´Â µ¿ÀÛ°ú ¼¶¼¼ÇÑ ¿¡·¯ 󸮸¦ ÇØ¾ß ÇÑ´Ù´Â Á¤µµ¸¸ ´Ù¸£´Ù. ÀϹÝȸ¦ À§ÇØ ÆÄÀÏ ÀÔÃâ·Â Ŭ·¡½ºµµ ÅÛÇø´À¸·Î Á¤ÀǵǾî ÀÖÀ¸¸ç ÀÌ ÅÛÇø´À¸·ÎºÎÅÍ ³× °³ÀÇ Æ¯¼öÈ ¹öÀüÀ» Á¤ÀÇÇÑ´Ù.
typedef basic_ifstream<char, char_traits<char> > ifstream;
typedef basic_ofstream<char, char_traits<char> > ofstream;
typedef basic_ifstream<wchar_t, char_traits<wchar_t> > wifstream;
typedef basic_ofstream<wchar_t, char_traits<wchar_t> > wofstream;
i(o)fstream Ŭ·¡½º´Â char ŸÀÔÀ» ´ë»óÀ¸·Î ÇÏ´Â ÆÄÀÏ ÀÔÃâ·Â Ŭ·¡½ºÀ̸ç wi(o)fstreamÀº wchar_t ŸÀÔÀ» ´ë»óÀ¸·Î ÇÏ´Â À¯´ÏÄÚµå ÆÄÀÏ ÀÔÃâ·Â Ŭ·¡½ºÀÌ´Ù. ÀÌ Å¬·¡½ºµéÀº fstream Çì´õ ÆÄÀÏ¿¡ ¼±¾ðµÇ¾î ÀÖÀ¸¹Ç·Î ÆÄÀÏ ÀÔÃâ·ÂÀ» ÇÏ·Á¸é ¹Ýµå½Ã ÀÌ Çì´õ ÆÄÀÏÀ» ÀÎŬ·çµåÇØ¾ß ÇÑ´Ù. ¸ÕÀú ÆÄÀÏ Ãâ·Â ¿¹Á¦ºÎÅÍ ÀÛ¼ºÇØ º¸ÀÚ. C¿¡¼¿Í ¸¶Âù°¡Áö·Î ÆÄÀÏ ÀÔÃâ·ÂÀ» Çϱâ À§Çؼ´Â ¹öÆÛ¸¦ ÁغñÇØ¾ß ÇϹǷΠÆÄÀÏÀ» ¿°í ´Ý´Â 󸮰¡ ÇÊ¿äÇÏ´Ù.
¿¹ Á¦ : cppfilewrite |
#include <Turboc.h>
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
ofstream f;
f.open("c:\\cpptest.txt");
f << "String " << 1234 << endl;
f.close();
}
ofstreamÀÇ °´Ã¼ f¸¦ ¼±¾ðÇϰí open ÇÔ¼ö·Î Ãâ·ÂÇϰíÀÚ ÇÏ´Â ÆÄÀÏÀ» ¿¬´Ù. open ÇÔ¼öÀÇ Àμö·Î ¿°íÀÚ ÇÏ´Â ÆÄÀÏÀÇ À̸§À» Àü´ÞÇϴµ¥ ¿ÏÀü °æ·Î¸¦ ÁÙ ¼öµµ ÀÖ°í »ó´ë °æ·Î¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. open ÇÔ¼ö´Â ÆÄÀÏÀÌ ¾øÀ¸¸é »õ·Î ¸¸µé°í ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é µ¤¾î¾´´Ù. °´Ã¼¸¦ ¼±¾ðÇϰí open ÇÔ¼ö·Î ÆÄÀÏÀ» ¿©´Â µÎ °úÁ¤À» °ÅÄ¡´Â ´ë½Å »ý¼ºÀÚ·Î ¿ÀÇÂÇÒ ÆÄÀÏÀÇ À̸§À» °ð¹Ù·Î Àü´ÞÇÒ ¼öµµ ÀÖ´Ù.
ofstream f("c:\\cpptest.txt");
ÀÌ ¹®Àå¿¡ ÀÇÇØ Ãâ·Â °´Ã¼ f´Â µð½ºÅ©»óÀÇ cpptest.txt ÆÄÀϰú ¿¬°áµÇ¸ç ÀÌ °´Ã¼·Î Ãâ·ÂÀ» º¸³»¸é ¹°¸®ÀûÀÎ ÆÄÀÏ¿¡ ±â·ÏµÈ´Ù. Ãâ·ÂÇÒ ¶§´Â << ¿¬»êÀÚ¸¦ »ç¿ëÇϴµ¥ Äֿܼ¡¼¿Í ¸¶Âù°¡Áö·Î ¸ðµç ±âº» ŸÀÔ¿¡ ´ëÇØ Ãâ·ÂÇÒ ¼ö ÀÖÀ¸¸ç ¿¬¼âÀûÀÎ Ãâ·Âµµ °¡´ÉÇÏ´Ù. Ãâ·ÂÀ» ¿Ï·áÇßÀ¸¸é close ÇÔ¼ö·Î ÆÄÀÏÀ» ´Ý´Â´Ù. ¿¹Á¦¸¦ ½ÇÇàÇϸé C µå¶óÀ̺êÀÇ ·çÆ® µð·ºÅ丮¿¡ cpptest.txt¶ó´Â ÆÄÀÏÀÌ »ý¼ºµÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½Àº ÀÌ ÆÄÀÏÀ» ´Ù½Ã ÀÐ¾î º¸ÀÚ.
¿¹ Á¦ : cppfileread |
#include <Turboc.h>
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
ifstream f;
char str[128];
int i;
f.open("c:\\cpptest.txt");
f >> str >> i;
cout << str << i << endl;
f.close();
}
ÆÄÀϷκÎÅÍÀÇ ÀÔ·ÂÀ» À§ÇØ ifstream Ŭ·¡½ºÀÇ °´Ã¼ f¸¦ ¼±¾ðÇϰí open ÇÔ¼ö·Î ÆÄÀÏÀ» ¿¾ú´Âµ¥ »ý¼ºÀÚ¿¡¼ ¹Ù·Î ´ë»ó ÆÄÀÏÀ» ÁöÁ¤ÇÏ´Â °Íµµ ¹°·Ð °¡´ÉÇÏ´Ù. f·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ÀÐÀ» ¶§´Â >> ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ¿¹Á¦¿¡¼´Â str ¹è¿¿¡ ¹®ÀÚ¿À» Àаí i¿¡ Á¤¼ö¸¦ ÀÐÀº ÈÄ È®ÀÎÀ» À§ÇØ È¸éÀ¸·Î ´Ù½Ã Ãâ·ÂÇØ º¸¾Ò´Ù. ÀÔÃâ·ÂÀ» ¿Ï·áÇÑ ÈÄ close·Î ÆÄÀÏÀ» ´Ý´Â´Ù.
ÆÄÀÏÀº ¸Þ¸ð¸® ¿ÜºÎ¿¡ Á¸ÀçÇϱ⠶§¹®¿¡ ¿¡·¯°¡ ¹ß»ýÇÒ È®·üÀÌ ¾ÆÁÖ ³ôÀ¸¹Ç·Î ¿ÀÇÂÇÒ ¶§ ÆÄÀÏÀÌ Á¦´ë·Î ¿·È´ÂÁö Ç×»ó È®ÀÎÇØ¾ß ÇÑ´Ù. ¿¡·¯ ¹ß»ý ¿©ºÎ´Â ¿ÀÇ Á÷ÈÄ¿¡ °´Ã¼ÀÇ is_open ¸â¹ö ÇÔ¼ö·Î È®ÀÎÇÒ ¼ö Àִµ¥ ÀÌ ÇÔ¼ö´Â Àμö¸¦ ÃëÇÏÁö ¾ÊÀ¸¸ç ¼º°ø ¿©ºÎ¸¦ Ç¥ÇöÇÏ´Â bool°ªÀ» ¸®ÅÏÇÑ´Ù. is_open È£Ãâ¹®À» if¹®ÀÇ Á¶°Ç½Ä¿¡ »ç¿ëÇÏ¸é ¼º°ø ¿©ºÎ¿¡ µû¸¥ µ¿ÀÛÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
¿¹ Á¦ : is_open |
#include <Turboc.h>
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
ifstream f;
f.open("c:\\neverexist.txt");
if (f.is_open()) {
cout << "ÆÄÀÏ ¿±â ¼º°ø" << endl;
f.close();
} else {
cout << "ÆÄÀÏ ¿±â ½ÇÆÐ" << endl;
}
}
¿¹Á¦¿¡¼´Â ¿¡·¯¸¦ À¯µµÇϱâ À§ÇØ ½ÇÁ¦·Î Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ» ¿¾î º¸¾Ò´Âµ¥ ÀÌ °æ¿ì is_open ÇÔ¼ö´Â ¿±â¿¡ ½ÇÆÐÇß´Ù´Â Àǹ̷Πfalse¸¦ ¸®ÅÏÇÑ´Ù. ÇÁ·Î±×·¥Àº ÆÄÀÏ ¿±â¿¡ ¼º°øÇßÀ» ¶§¸¸ ÆÄÀÏÀ» ¾×¼¼½ºÇØ¾ß ÇÏ¸ç ½ÇÆÐÇßÀ» °æ¿ì´Â ÀûÀýÇÏ°Ô ¿¡·¯ ó¸®ÇØ¾ß ÇÑ´Ù.
ÆÄÀÏÀ» ¿©´Â open ÇÔ¼öÀÇ ¿ÏÀüÇÑ ¿øÇüÀº ´ÙÀ½°ú °°´Ù. ´ë»ó ÆÄÀÏÀÇ °æ·Î ¿Ü¿¡µµ ÆÄÀÏÀ» ¾î¶»°Ô ¿ °ÍÀÎÁö ÆÄÀÏ ¸ðµå¸¦ ÁöÁ¤ÇÏ´Â µÎ ¹øÂ° Àμö°¡ ÀÖÀ¸¸ç µðÆúÆ®°ªÀÌ ÁöÁ¤µÇ¾î ÀÖ´Ù. Ãâ·Â¿ë°ú ÀԷ¿ëÀÇ µðÆúÆ® ¸ðµå°¡ ´Ù¸£°Ô ¼³Á¤µÇ¾î Àִµ¥ ÀԷ¿ëÀº ÀÐÀ» ¼ö¸¸ ÀÖ°í Ãâ·Â¿ëÀº ¾µ ¼ö¸¸ ÀÖ´Ù.
void ifstream::open(const char *s, ios_base::openmode mode = ios_base::in);
void ofstream::open(const char *s, ios_base::openmode mode = ios_base::out | ios_base::trunc);
open ÇÔ¼ö¿Í µ¿ÀÏÇÑ µ¿ÀÛÀ» ÇÏ´Â »ý¼ºÀÚÀÇ ¿øÇüµµ ÀÌ¿Í °°´Ù. ÆÄÀÏ ¸ðµå´Â ios_base¿¡ Á¤ÀÇµÈ »ó¼öµéÀÌ¸ç ¿©·¯ °³ÀÇ ¸ðµå¸¦ OR ¿¬»êÀÚ·Î ¹¾î¼ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ÆÄÀÏ ¸ðµåÀÇ Á¾·ù´Â ´ÙÀ½°ú °°´Ù.
¸ðµå |
¼³¸í |
ios_base::out |
Ãâ·Â¿ëÀ¸·Î ÆÄÀÏÀ» ¿¬´Ù. |
ios_base::in |
ÀԷ¿ëÀ¸·Î ÆÄÀÏÀ» ¿¬´Ù. |
ios_base::app |
ÆÄÀÏ ³¡¿¡ µ¥ÀÌÅ͸¦ µ¡ºÙÀδÙ. µ¥ÀÌÅ͸¦ Ãß°¡ÇÏ´Â °Í¸¸ °¡´ÉÇÏ´Ù. |
ios_base::ate |
ÆÄÀÏÀ» ¿ÀÚ ¸¶ÀÚ ÆÄÀÏ ³¡À¸·Î FP¸¦ º¸³½´Ù. FP¸¦ ÀÓÀÇ À§Ä¡·Î ¿Å±æ ¼ö ÀÖ´Ù. |
ios_base::trunc |
ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÒ °æ¿ì Å©±â¸¦ 0À¸·Î ¸¸µç´Ù. |
ios_base::binary |
ÀÌÁø ÆÄÀÏ ¸ðµå·Î ¿¬´Ù. |
open ÇÔ¼ö¿¡ µðÆúÆ®·Î ÁöÁ¤µÇ¾î ÀÖ´Â ÆÄÀÏ ¸ðµå¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸·Á¸é µÎ ¹øÂ° Àμö¿¡ ¸í½ÃÀûÀ¸·Î ¿øÇÏ´Â ÆÄÀÏ ¸ðµå¸¦ ÁöÁ¤ÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î ÆÄÀÏÀ» ¿ÀÚ ¸¶ÀÚ µÚ¿¡ µ¡ºÙÀ̱⸦ ÇÏ°í ½ÍÀ¸¸é out ¸ðµå¿Í app ¸ðµå¸¦ °°ÀÌ ÁöÁ¤ÇÑ´Ù. ÀԷ°ú Ãâ·ÂÀ» ¸ðµÎ ÇÒ ¼ö ÀÖ´Â ¸ðµå·Î ¿°í ½ÍÀ¸¸é fstream °´Ã¼¸¦ »ý¼ºÇϰí in, out ¸ðµå¸¦ ¸ðµÎ ÁöÁ¤ÇÏ¸é µÈ´Ù. fstreamÀº istream, ostreamÀ¸·ÎºÎÅÍ ´ÙÁß »ó¼ÓµÈ iostreamÀ¸·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Æ ÀÔ·Â, Ãâ·Â¿ë ¹öÆÛ¸¦ °¢°¢ Çϳª¾¿ °¡Áö¹Ç·Î ÀÔÃâ·Â °â¿ëÀÇ °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ´Ù.
´ÙÀ½ ¿¹Á¦´Â ÆÄÀÏ ÀÔÃâ·Â °´Ã¼¸¦ »ç¿ëÇÏ¿© ÆÄÀÏÀ» º¹»çÇÑ´Ù. C µå¶óÀ̺êÀÇ ·çÆ®¿¡ ÀÖ´Â dummy.txt¸¦ º¹»ç ¿øº»À¸·Î »ç¿ëÇϹǷΠÀÌ ¿¹Á¦¸¦ ½ÇÇàÇØ º¸·Á¸é ¾Æ¹« ÆÄÀÏÀ̳ª ·çÆ®¿¡ º¹»çÇØ ³õ°í À̸§À» ¹Ù²ã ³õ¾Æ¾ß ÇÑ´Ù. ¿¹Á¦¸¦ ½ÇÇàÇÏ¸é ¶È°°Àº ³»¿ëÀ» °¡Áö´Â dummy2.txt ÆÄÀÏÀÌ »ý¼ºµÇ¾î ÀÖÀ» °ÍÀÌ´Ù.
¿¹ Á¦ : cppfilecopy |
#include <Turboc.h>
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
ifstream src("c:\\dummy.txt",ios_base::in | ios_base::binary);
if (!src.is_open()) {
cout << "¿øº» ÆÄÀÏÀÌ ¾ø½À´Ï´Ù." << endl;
}
ofstream dest("c:\\dummy2.txt",ios_base::out | ios_base::trunc | ios_base::binary);
char buf[10000];
int nread;
for (;;) {
src.read(buf,10000);
nread=src.gcount();
if (nread==0) break;
dest.write(buf,nread);
}
src.close();
dest.close();
}
¿øº»°ú ´ë»ó ÆÄÀÏÀ» À§ÇØ µÎ °³ÀÇ ÆÄÀÏ °´Ã¼¸¦ ¼±¾ðÇ쵂 ¿øº»Àº Àб⠸ðµå·Î ¿°í ´ë»óÀº ¾²±â ¸ðµå·Î ¿¬´Ù. ÆÄÀÏ º¹»ç´Â ÆÄÀÏ¿¡ ÀÖ´Â ³»¿ëÀ» ±×´ë·Î ÀÐ¾î¼ »çº»À» ¸¸µå´Â °ÍÀ̹ǷΠÀÐ°í ¾²´Â Áß¿¡ ¾î¶°ÇÑ º¯È¯µµ ÇÒ Çʿ䰡 ¾øÀ¸¸ç ±×·¡¼ binary Ç÷¡±×¸¦ ÁöÁ¤ÇÏ¿© ÀÌÁø ¸ðµå·Î ¿¾ú´Ù. ÀÌÁø ¸ðµåÀÇ ÆÄÀÏÀ» ÀÐ°í ¾µ ¶§´Â ´ÙÀ½ ÇÔ¼öµéÀ» »ç¿ëÇÑ´Ù.
basic_istremm& read(char *s, streamsize n);
basic_ostream& write(const char *s, streamsize n);
ÀÐ°í ¾µ µ¥ÀÌÅÍÀÇ ½ÃÀÛ ¹øÁö¿Í Å©±â¸¦ Àμö·Î Àü´ÞÇÑ´Ù. º¹»çÇÏ´Â ¹æ¹ýÀº ¾ÆÁÖ ¿ø·ÐÀûÀε¥ ¿øº»¿¡¼ ÀÐ¾î¼ ´ë»ó ÆÄÀÏ·Î Ãâ·ÂÇϱ⸦ ¿øº»À» ´Ù ÀÐÀ» ¶§±îÁö ¹Ýº¹ÇÏ¸é µÈ´Ù. ¿¹Á¦¿¡¼´Â 10K Å©±âÀÇ ¹öÆÛ¸¦ ÁغñÇϰí 10K ´ÜÀ§·Î ¿øº»À» ÀÐ¾î ´ë»ó ÆÄÀÏ·Î º¸³»´Âµ¥ ´Ü, ÆÄÀÏ ³¡¿¡¼´Â ½ÇÁ¦ ÀÐÀº ¹ÙÀÌÆ®¸¸Å¸¸ Ãâ·ÂÇØ¾ß ÇÑ´Ù. read ÇÔ¼ö°¡ ½ÇÁ¦ ÀÐÀº ±æÀÌ´Â gcount ÇÔ¼ö·Î Á¶»çÇÒ ¼ö ÀÖ´Ù. º¹»ç°¡ ³¡³ª¸é close ÇÔ¼ö·Î µÎ ÆÄÀÏÀ» ¸ðµÎ ´Ý´Â´Ù.
ÆÄÀÏ ¾×¼¼½º ÇÔ¼öµéÀº Ç×»ó ÆÄÀÏÀÇ ÇöÀç À§Ä¡(FP)¸¦ ÂüÁ¶Çϸç ÀÐ°í ¾´ ÈÄ¿¡ FP¸¦ µÚÂÊÀ¸·Î ¿Å±â¹Ç·Î ¼øÂ÷ÀûÀ¸·Î ÆÄÀÏÀ» ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. FP¸¦ ÀÓÀÇÀÇ À§Ä¡·Î ¿Å±æ ¶§´Â ´ÙÀ½ µÎ ÇÔ¼ö¸¦ »ç¿ëÇϴµ¥ ÀԷ¿ë, Ãâ·Â¿ëÀÇ FP¸¦ µû·Î À¯ÁöÇϹǷΠÇÔ¼ö°¡ µÎ °³·Î ³ª´©¾îÁ® ÀÖ´Ù. ´ÙÁß »ó¼Ó¹Þ´Â fstream °´Ã¼´Â ¹öÆÛ°¡ µÎ °³À̹ǷΠÇöÀç À§Ä¡¿¡ ÇØ´çÇÏ´Â FPµµ µÎ °³¸¦ °¡Áø´Ù.
basic_istream& seekg(off_type off, ios_base::seek_dir way);
basic_ostream& seekp(off_type off, ios_base::seek_dir way);
ù ¹øÂ° Àμö off´Â ¾îµð·Î À̵¿ÇÒ °ÍÀÎÁö °Å¸®¸¦ ÁöÁ¤ÇÏ¸ç µÎ ¹øÂ° Àμö´Â À̵¿ÀÇ ±âÁØÁ¡Àε¥ ios_base::beg´Â ÆÄÀÏÀÇ ¼±µÎ¸¦ ±âÁØÀ¸·Î Çϸç ios_base::cur´Â ÇöÀç À§Ä¡, iso_base::end´Â ÆÄÀÏÀÇ ³¡À» ±âÁØÀ¸·Î ÇÑ´Ù. FP¸¦ ÁöÁ¤ÇÏ´Â ¹æ½ÄÀº CÀÇ fseek ÇÔ¼ö¿Í »ç½Ç»ó µ¿ÀÏÇÏ´Ù. FPÀÇ ÇöÀç À§Ä¡¸¦ Á¶»çÇÏ´Â ÇÔ¼ö´Â tellp, tellgÀε¥ ¿ª½Ã µÎ °³ÀÇ FP¿¡ ´ëÇØ ÇÔ¼ö°¡ °¢°¢ Á¦°øµÈ´Ù.