Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
C++ Îļþ²Ù×÷Ïê½â
 
À´Ô´£ºlikebeta  ·¢²¼ÓÚ£º2016-11-22
  4617  次浏览      28
 

C++ ͨ¹ýÒÔϼ¸¸öÀàÖ§³ÖÎļþµÄÊäÈëÊä³ö£º

ofstream: д²Ù×÷£¨Êä³ö£©µÄÎļþÀà (ÓÉostreamÒýÉê¶øÀ´)

ifstream: ¶Á²Ù×÷£¨ÊäÈ룩µÄÎļþÀà(ÓÉistreamÒýÉê¶øÀ´)

fstream: ¿Éͬʱ¶Áд²Ù×÷µÄÎļþÀà (ÓÉiostreamÒýÉê¶øÀ´)

´ò¿ªÎļþ(Open a file)

¶ÔÕâЩÀàµÄÒ»¸ö¶ÔÏóËù×öµÄµÚÒ»¸ö²Ù×÷ͨ³£¾ÍÊǽ«ËüºÍÒ»¸öÕæÕýµÄÎļþÁªÏµÆðÀ´£¬Ò²¾ÍÊÇ˵´ò¿ªÒ»¸öÎļþ¡£±»´ò¿ªµÄÎļþÔÚ³ÌÐòÖÐÓÉÒ»¸öÁ÷¶ÔÏó(stream object)À´±íʾ (ÕâЩÀàµÄÒ»¸öʵÀý) £¬¶ø¶ÔÕâ¸öÁ÷¶ÔÏóËù×öµÄÈκÎÊäÈëÊä³ö²Ù×÷ʵ¼Ê¾ÍÊǶԸÃÎļþËù×öµÄ²Ù×÷¡£

Ҫͨ¹ýÒ»¸öÁ÷¶ÔÏó´ò¿ªÒ»¸öÎļþ£¬ÎÒÃÇʹÓÃËüµÄ³ÉÔ±º¯Êýopen()£ºvoid open (const char * filename, openmode mode);

ÕâÀïfilename ÊÇÒ»¸ö×Ö·û´®£¬´ú±íÒª´ò¿ªµÄÎļþÃû£¬mode ÊÇÒÔϱêÖ¾·ûµÄÒ»¸ö×éºÏ£º ios::in ΪÊäÈë(¶Á)¶ø´ò¿ªÎļþ

ios::out ΪÊä³ö(д)¶ø´ò¿ªÎļþ

ios::ate ³õʼλÖãºÎļþβ

ios::app ËùÓÐÊä³ö¸½¼ÓÔÚÎļþĩβ

ios::trunc Èç¹ûÎļþÒÑ´æÔÚÔòÏÈɾ³ý¸ÃÎļþ

ios::binary ¶þ½øÖÆ·½Ê½

ÕâЩ±êʶ·û¿ÉÒÔ±»×éºÏʹÓã¬ÖмäÒÔ¡±»ò¡±²Ù×÷·û(|)¼ä¸ô¡£ÀýÈ磬Èç¹ûÎÒÃÇÏëÒªÒÔ¶þ½øÖÆ·½Ê½´ò¿ªÎļþ¡±example.bin¡± À´Ð´ÈëһЩÊý¾Ý£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔÏ·½Ê½µ÷ÓóÉÔ±º¯Êýopen£¨£©À´ÊµÏÖ£º

ofstream file;
file.open ("example.bin", ios::out | ios::app | ios::binary);

ofstream, ifstream ºÍ fstreamËùÓÐÕâЩÀàµÄ³ÉÔ±º¯Êýopen ¶¼°üº¬ÁËÒ»¸öĬÈÏ´ò¿ªÎļþµÄ·½Ê½£¬ÕâÈý¸öÀàµÄĬÈÏ·½Ê½¸÷²»Ïàͬ£º Àà ²ÎÊýµÄĬÈÏ·½Ê½

ofstream ios::out | ios::trunc

ifstream ios::in

fstream ios::in | ios::out

Ö»Óе±º¯Êý±»µ÷ÓÃʱûÓÐÉùÃ÷·½Ê½²ÎÊýµÄÇé¿öÏ£¬Ä¬ÈÏÖµ²Å»á±»²ÉÓá£Èç¹ûº¯Êý±»µ÷ÓÃʱÉùÃ÷ÁËÈκβÎÊý£¬Ä¬ÈÏÖµ½«±»ÍêÈ«¸Äд£¬¶ø²»»áÓëµ÷ÓòÎÊý×éºÏ¡£

ÓÉ ÓÚ¶ÔÀàofstream, ifstream ºÍ fstream µÄ¶ÔÏóËù½øÐеĵÚÒ»¸ö²Ù×÷ͨ³£¶¼ÊÇ´ò¿ªÎļþ£¬ÕâЩÀà¶¼ÓÐÒ»¸ö¹¹Ô캯Êý¿ÉÒÔÖ±½Óµ÷ÓÃopen º¯Êý£¬²¢ÓµÓÐͬÑùµÄ²ÎÊý¡£ÕâÑù£¬ÎÒÃǾͿÉÒÔͨ¹ýÒÔÏ·½Ê½½øÐÐÓëÉÏÃæÍ¬ÑùµÄ¶¨Òå¶ÔÏóºÍ´ò¿ªÎļþµÄ²Ù×÷£º

ofstream file ("example.bin", ios::out | ios::app | ios::binary);

Á½ÖÖ´ò¿ªÎļþµÄ·½Ê½¶¼ÊÇÕýÈ·µÄ¡£

Äã¿ÉÒÔͨ¹ýµ÷ÓóÉÔ±º¯Êýis_open()À´¼ì²éÒ»¸öÎļþÊÇ·ñÒѾ­±»Ë³ÀûµÄ´ò¿ªÁË£ºbool is_open();

Ëü·µ»ØÒ»¸ö²¼¶û(bool)Öµ£¬ÎªÕ棨true£©´ú±íÎļþÒѾ­±»Ë³Àû´ò¿ª£¬¼Ù( false )ÔòÏà·´¡£

¹Ø±ÕÎļþ(Closing a file)

µ±Îļþ¶Áд²Ù×÷Íê³ÉÖ®ºó£¬ÎÒÃDZØÐ뽫Îļþ¹Ø±ÕÒÔʹÎļþÖØÐ±äΪ¿É·ÃÎʵġ£¹Ø±ÕÎļþÐèÒªµ÷ÓóÉÔ±º¯Êýclose()£¬Ëü¸ºÔ𽫻º´æÖеÄÊý¾ÝÅŷųöÀ´²¢¹Ø±ÕÎļþ¡£ËüµÄ¸ñʽºÜ¼òµ¥£º

void close ();

Õâ¸öº¯ÊýÒ»µ©±»µ÷Óã¬Ô­ÏȵÄÁ÷¶ÔÏó(stream object)¾Í¿ÉÒÔ±»ÓÃÀ´´ò¿ªÆäËüµÄÎļþÁË£¬Õâ¸öÎļþÒ²¾Í¿ÉÒÔÖØÐ±»ÆäËüµÄ½ø³Ì(process)ËùÓзÃÎÊÁË¡£

Ϊ·ÀÖ¹Á÷¶ÔÏó±»Ïú»Ùʱ»¹ÁªÏµ×Å´ò¿ªµÄÎļþ£¬Îö¹¹º¯Êý(destructor)½«»á×Ô¶¯µ÷Óùرպ¯Êýclose¡£

Îı¾Îļþ(Text mode files)

Ààofstream, ifstream ºÍfstream ÊÇ·Ö±ð´Óostream, istream ºÍiostream ÖÐÒýÉê¶øÀ´µÄ¡£Õâ¾ÍÊÇΪʲô fstream µÄ¶ÔÏó¿ÉÒÔʹÓÃÆä¸¸ÀàµÄ³ÉÔ±À´·ÃÎÊÊý¾Ý¡£

Ò»°ãÀ´Ëµ£¬ÎÒÃǽ«Ê¹ÓÃÕâЩÀàÓëͬ¿ØÖÆÌ¨(console)½»»¥Í¬ÑùµÄ³ÉÔ±º¯Êý(cin ºÍ cout)À´½øÐÐÊäÈëÊä³ö¡£ÈçÏÂÃæµÄÀýÌâËùʾ£¬ÎÒÃÇʹÓÃÖØÔØµÄ²åÈë²Ù×÷·û

// writing on a text file
#include <fstream>
using namespace std;

int main()
{
ofstream examplefile("example.txt");
if (examplefile.is_open())
{
examplefile << "This is a line.\n";
examplefile << "This is another line.\n";
examplefile.close();
}
return 0;
}

´ÓÎļþÖжÁÈëÊý¾ÝÒ²¿ÉÒÔÓÃÓë cinµÄʹÓÃͬÑùµÄ·½·¨£º

// reading a text file
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main ()
{
char buffer[256];
ifstream examplefile("example.txt");
if (! examplefile.is_open())
{
cout << "Error opening file"; exit (1);
}
while (!examplefile.eof())
{
examplefile.getline(buffer,100);
cout<<buffer<< endl;
}
return 0;
}
//This is a line.
//This is another line.

ÉÏÃæµÄÀý×Ó¶ÁÈëÒ»¸öÎı¾ÎļþµÄÄÚÈÝ£¬È»ºó½«Ëü´òÓ¡µ½ÆÁÄ»ÉÏ¡£×¢ÒâÎÒÃÇʹÓÃÁËÒ»¸öеijÉÔ±º¯Êý½Ð×öeof £¬ËüÊÇifstream ´ÓÀà ios Öм̳йýÀ´µÄ£¬µ±µ½´ïÎļþĩβʱ·µ»Øtrue ¡£

״̬±êÖ¾·ûµÄÑéÖ¤(Verification of state flags)

³ýÁËeof()ÒÔÍ⣬»¹ÓÐһЩÑéÖ¤Á÷µÄ״̬µÄ³ÉÔ±º¯Êý£¨ËùÓж¼·µ»ØboolÐÍ·µ»ØÖµ£©£º

bad()

Èç¹ûÔÚ¶Áд¹ý³ÌÖгö´í£¬·µ»Ø true ¡£ÀýÈ磺µ±ÎÒÃÇÒª¶ÔÒ»¸ö²»ÊÇ´ò¿ªÎªÐ´×´Ì¬µÄÎļþ½øÐÐдÈëʱ£¬»òÕßÎÒÃÇҪдÈëµÄÉ豸ûÓÐÊ£Óà¿Õ¼äµÄʱºò¡£

fail()

³ýÁËÓëbad() ͬÑùµÄÇé¿öÏ»᷵»Ø true ÒÔÍ⣬¼ÓÉϸñʽ´íÎóʱҲ·µ»Øtrue £¬ÀýÈçµ±ÏëÒª¶ÁÈëÒ»¸öÕûÊý£¬¶ø»ñµÃÁËÒ»¸ö×ÖĸµÄʱºò¡£

eof()

Èç¹û¶ÁÎļþµ½´ïÎļþĩ⣬·µ»Øtrue¡£

good()

ÕâÊÇ×îͨÓõģºÈç¹ûµ÷ÓÃÒÔÉÏÈκÎÒ»¸öº¯Êý·µ»Øtrue µÄ»°£¬´Ëº¯Êý·µ»Ø false ¡£

ÒªÏëÖØÖÃÒÔÉϳÉÔ±º¯ÊýËù¼ì²éµÄ״̬±êÖ¾£¬Äã¿ÉÒÔʹÓóÉÔ±º¯Êýclear()£¬Ã»ÓвÎÊý¡£

»ñµÃºÍÉèÖÃÁ÷Ö¸Õë(get and put stream pointers)

ËùÓÐÊäÈë/Êä³öÁ÷¶ÔÏó(i/o streams objects)¶¼ÓÐÖÁÉÙÒ»¸öÁ÷Ö¸Õ룺

ifstream£¬ ÀàËÆistream, ÓÐÒ»¸ö±»³ÆÎªget pointerµÄÖ¸Õ룬ָÏòÏÂÒ»¸ö½«±»¶ÁÈ¡µÄÔªËØ¡£

ofstream, ÀàËÆ ostream, ÓÐÒ»¸öÖ¸Õë put pointer £¬Ö¸ÏòдÈëÏÂÒ»¸öÔªËØµÄλÖá£

fstream, ÀàËÆ iostream, ͬʱ¼Ì³ÐÁËget ºÍ put

ÎÒÃÇ¿ÉÒÔͨ¹ýʹÓÃÒÔϳÉÔ±º¯ÊýÀ´¶Á³ö»òÅäÖÃÕâЩָÏòÁ÷ÖжÁдλÖõÄÁ÷Ö¸Õ룺

tellg() ºÍ tellp()

ÕâÁ½¸ö³ÉÔ±º¯Êý²»Óô«Èë²ÎÊý£¬·µ»Øpos_type ÀàÐ͵ÄÖµ(¸ù¾ÝANSI-C++ ±ê×¼) £¬¾ÍÊÇÒ»¸öÕûÊý£¬´ú±íµ±Ç°get Á÷Ö¸ÕëµÄλÖà (ÓÃtellg) »ò put Á÷Ö¸ÕëµÄλÖÃ(ÓÃtellp).

seekg() ºÍseekp()

Õâ¶Ôº¯Êý·Ö±ðÓÃÀ´¸Ä±äÁ÷Ö¸Õëget ºÍputµÄλÖá£Á½¸öº¯Êý¶¼±»ÖØÔØÎªÁ½ÖÖ²»Í¬µÄÔ­ÐÍ£º

seekg ( pos_type position );
seekp ( pos_type position );

ʹÓÃÕâ¸öÔ­ÐÍ£¬Á÷Ö¸Õë±»¸Ä±äΪָÏò´ÓÎļþ¿ªÊ¼¼ÆËãµÄÒ»¸ö¾ø¶ÔλÖá£ÒªÇó´«ÈëµÄ²ÎÊýÀàÐÍÓ뺯Êý tellg ºÍtellp µÄ·µ»ØÖµÀàÐÍÏàͬ¡£

seekg ( off_type offset, seekdir direction );
seekp ( off_type offset, seekdir direction );

ʹÓÃÕâ¸öÔ­ÐÍ¿ÉÒÔÖ¸¶¨ÓɲÎÊýdirection¾ö¶¨µÄÒ»¸ö¾ßÌåµÄÖ¸Õ뿪ʼ¼ÆËãµÄÒ»¸öÎ»ÒÆ(offset)¡£Ëü¿ÉÒÔÊÇ£º

ios::beg ´ÓÁ÷¿ªÊ¼Î»ÖüÆËãµÄÎ»ÒÆ

ios::cur ´ÓÁ÷Ö¸Õ뵱ǰλÖÿªÊ¼¼ÆËãµÄÎ»ÒÆ

ios::end ´ÓÁ÷ĩβ´¦¿ªÊ¼¼ÆËãµÄÎ»ÒÆ

Á÷Ö¸Õë get ºÍ put µÄÖµ¶ÔÎı¾Îļþ(text file)ºÍ¶þ½øÖÆÎļþ(binary file)µÄ¼ÆËã·½·¨¶¼ÊDz»Í¬µÄ£¬ÒòΪÎı¾Ä£Ê½µÄÎļþÖÐÄ³Ð©ÌØÊâ×Ö·û¿ÉÄܱ»Ð޸ġ£ÓÉÓÚÕâ¸öÔ­Òò£¬½¨Òé¶ÔÒÔÎı¾Îļþģʽ´ò¿ªµÄÎļþ×ÜÊÇʹÓÃseekg ºÍ seekpµÄµÚÒ»ÖÖÔ­ÐÍ£¬¶øÇÒ²»Òª¶Ôtellg »ò tellp µÄ·µ»ØÖµ½øÐÐÐ޸ġ£¶Ô¶þ½øÖÆÎļþ£¬Äã¿ÉÒÔÈÎÒâʹÓÃÕâЩº¯Êý£¬Ó¦¸Ã²»»áÓÐÈκÎÒâÍâµÄÐÐΪ²úÉú¡£

ÒÔÏÂÀý×ÓʹÓÃÕâЩº¯ÊýÀ´»ñµÃÒ»¸ö¶þ½øÖÆÎļþµÄ´óС£º

// obtaining file size
#include <iostream>
#include <fstream>
using namespace std;

int main ()
{
const char * filename = "example.txt";
long l,m;
ifstream file(filename, ios::in|ios::binary);
l = file.tellg();
file.seekg(0, ios::end);
m = file.tellg();
file.close();
cout <<"size of "<< filename;
cout <<" is "<< (m-l)<<" bytes.\n";
return 0;
}
//size of example.txt is 40 bytes.

¶þ½øÖÆÎļþ(Binary files)

ÔÚ¶þ½øÖÆÎļþÖУ¬Ê¹ÓÃ>£¬ÒÔ¼°º¯Êý£¨Èçgetline£©À´²Ù×÷·ûÊäÈëºÍÊä³öÊý¾Ý£¬Ã»ÓÐʲôʵ¼ÊÒâÒ壬ËäÈ»ËüÃÇÊÇ·ûºÏÓï·¨µÄ¡£

ÎÄ ¼þÁ÷°üÀ¨Á½¸öΪ˳Ðò¶ÁдÊý¾ÝÌØÊâÉè¼ÆµÄ³ÉÔ±º¯Êý£ºwrite ºÍ read¡£µÚÒ»¸öº¯Êý (write) ÊÇostream µÄÒ»¸ö³ÉÔ±º¯Êý£¬¶¼ÊDZ»ofstreamËù¼Ì³Ð¡£¶øread ÊÇistream µÄÒ»¸ö³ÉÔ±º¯Êý£¬±»ifstream Ëù¼Ì³Ð¡£Àà fstream µÄ¶ÔÏóͬʱӵÓÐÕâÁ½¸öº¯Êý¡£ËüÃǵÄÔ­ÐÍÊÇ£º

write ( char * buffer, streamsize size );
read ( char * buffer, streamsize size );

ÕâÀï buffer ÊÇÒ»¿éÄÚ´æµÄµØÖ·£¬ÓÃÀ´´æ´¢»ò¶Á³öÊý¾Ý¡£²ÎÊýsize ÊÇÒ»¸öÕûÊýÖµ£¬±íʾҪ´Ó»º´æ£¨buffer£©ÖжÁ³ö»òдÈëµÄ×Ö·ûÊý¡£

// reading binary file
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
const char * filename = "example.txt";
char * buffer;
long size;
ifstream file(filename, ios::in|ios::binary|ios::ate);
size = file.tellg();
file.seekg(0, ios::beg);
buffer = new char [size];
file.read(buffer, size);
file.close();
cout <<"the complete file is in a buffer";
delete[] buffer;
return 0;
}
//The complete file is in a buffer

»º´æºÍͬ²½(Buffers and Synchronization)

µ±ÎÒÃǶÔÎļþÁ÷½øÐвÙ×÷µÄʱºò£¬ËüÃÇÓëÒ»¸östreambuf ÀàÐ͵Ļº´æ(buffer)ÁªÏµÔÚÒ»Æð¡£Õâ¸ö»º´æ£¨buffer£©Êµ¼ÊÊÇÒ»¿éÄÚ´æ¿Õ¼ä£¬×÷ΪÁ÷(stream)ºÍÎïÀíÎļþµÄý½é¡£ÀýÈ磬¶ÔÓÚÒ»¸öÊä³öÁ÷£¬ ÿ´Î³ÉÔ±º¯Êýput (дһ¸öµ¥¸ö×Ö·û)±»µ÷Óã¬Õâ¸ö×Ö·û²»ÊÇÖ±½Ó±»Ð´Èë¸ÃÊä³öÁ÷Ëù¶ÔÓ¦µÄÎïÀíÎļþÖе쬶øÊÇÊ×Ïȱ»²åÈëµ½¸ÃÁ÷µÄ»º´æ£¨buffer£©ÖС£

µ±»º´æ±»ÅŷųöÀ´(flush)ʱ£¬ËüÀïÃæµÄËùÓÐÊý¾Ý»òÕß±»Ð´ÈëÎïÀíýÖÊÖУ¨Èç¹ûÊÇÒ»¸öÊä³öÁ÷µÄ»°£©£¬»òÕß¼òµ¥µÄ±»Ä¨µô(Èç¹ûÊÇÒ»¸öÊäÈëÁ÷µÄ»°)¡£Õâ¸ö¹ý³Ì³ÆÎªÍ¬²½(synchronization)£¬Ëü»áÔÚÒÔÏÂÈÎÒ»Çé¿öÏ·¢Éú£º

µ±Îļþ±»¹Ø±Õʱ: ÔÚÎļþ±»¹Ø±Õ֮ǰ£¬ËùÓл¹Ã»Óб»Íêȫд³ö»ò¶ÁÈ¡µÄ»º´æ¶¼½«±»Í¬²½¡£

µ±»º´æbuffer Âúʱ:»º´æBuffers ÓÐÒ»¶¨µÄ¿Õ¼äÏÞÖÆ¡£µ±»º´æÂúʱ£¬Ëü»á±»×Ô¶¯Í¬²½¡£

¿ØÖÆ·ûÃ÷È·Ö¸Ã÷:µ±Óöµ½Á÷ÖÐÄ³Ð©ÌØ¶¨µÄ¿ØÖÆ·ûʱ£¬Í¬²½»á·¢Éú¡£ÕâЩ¿ØÖÆ·û°üÀ¨£ºflush ºÍendl¡£

Ã÷È·µ÷Óú¯Êýsync(): µ÷ÓóÉÔ±º¯Êýsync() (ÎÞ²ÎÊý)¿ÉÒÔÒý·¢Á¢¼´Í¬²½¡£Õâ¸öº¯Êý·µ»ØÒ»¸öint Öµ£¬µÈÓÚ-1 ±íʾÁ÷ûÓÐÁªÏµµÄ»º´æ»ò²Ù×÷ʧ°Ü

ÔÚC++ÖУ¬ÓÐÒ»¸östreamÕâ¸öÀ࣬ËùÓеÄI/O¶¼ÒÔÕâ¸ö¡°Á÷¡±ÀàΪ»ù´¡µÄ£¬°üÀ¨ÎÒÃÇÒªÈÏʶµÄÎļþI/O£¬streamÕâ¸öÀàÓÐÁ½¸öÖØÒªµÄÔËËã·û£º

1¡¢²åÈëÆ÷(<<)

ÏòÁ÷Êä³öÊý¾Ý¡£±ÈÈç˵ϵͳÓÐÒ»¸öĬÈϵıê×¼Êä³öÁ÷(cout)£¬Ò»°ãÇé¿öϾÍÊÇÖ¸µÄÏÔʾÆ÷£¬ËùÒÔ£¬cout

2¡¢ÎöÈ¡Æ÷(>>)

´ÓÁ÷ÖÐÊäÈëÊý¾Ý¡£±ÈÈç˵ϵͳÓÐÒ»¸öĬÈϵıê×¼ÊäÈëÁ÷(cin)£¬Ò»°ãÇé¿öϾÍÊÇÖ¸µÄ¼üÅÌ£¬ËùÒÔ£¬cin>>x;¾Í±íʾ´Ó±ê×¼ÊäÈëÁ÷ÖжÁȡһ¸öÖ¸¶¨ÀàÐÍ(¼´±äÁ¿xµÄÀàÐÍ)µÄÊý¾Ý¡£

ÔÚC++ÖУ¬¶ÔÎļþµÄ²Ù×÷ÊÇͨ¹ýstreamµÄ×ÓÀàfstream(file stream)À´ÊµÏֵģ¬ËùÒÔ£¬ÒªÓÃÕâÖÖ·½Ê½²Ù×÷Îļþ£¬¾Í±ØÐë¼ÓÈëÍ·Îļþfstream.h¡£ÏÂÃæ¾Í°Ñ´ËÀàµÄÎļþ²Ù×÷¹ý³ÌÒ»Ò»µÀÀ´¡£

Ò»¡¢´ò¿ªÎļþ

ÔÚfstreamÀàÖУ¬ÓÐÒ»¸ö³ÉÔ±º¯Êýopen()£¬¾ÍÊÇÓÃÀ´´ò¿ªÎļþµÄ£¬ÆäÔ­ÐÍÊÇ£º

void open(const char* filename,int mode,int access);

²ÎÊý£º

filename£º Òª´ò¿ªµÄÎļþÃû

mode£º Òª´ò¿ªÎļþµÄ·½Ê½

access£º ´ò¿ªÎļþµÄÊôÐÔ

´ò¿ªÎļþµÄ·½Ê½ÔÚÀàios(ÊÇËùÓÐÁ÷ʽI/OÀàµÄ»ùÀà)Öж¨Ò壬³£ÓõÄÖµÈçÏ£º

ios::app£º ÒÔ×·¼ÓµÄ·½Ê½´ò¿ªÎļþ

ios::ate£º Îļþ´ò¿ªºó¶¨Î»µ½Îļþ⣬ios:app¾Í°üº¬ÓдËÊôÐÔ

ios::binary£º ÒÔ¶þ½øÖÆ·½Ê½´ò¿ªÎļþ£¬È±Ê¡µÄ·½Ê½ÊÇÎı¾·½Ê½¡£Á½ÖÖ·½Ê½µÄÇø±ð¼ûǰÎÄ

ios::in£º ÎļþÒÔÊäÈ뷽ʽ´ò¿ª

ios::out£º ÎļþÒÔÊä³ö·½Ê½´ò¿ª

ios::nocreate£º ²»½¨Á¢Îļþ£¬ËùÒÔÎļþ²»´æÔÚʱ´ò¿ªÊ§°Ü

ios::noreplace£º²»¸²¸ÇÎļþ£¬ËùÒÔ´ò¿ªÎļþʱÈç¹ûÎļþ´æÔÚʧ°Ü

ios::trunc£º Èç¹ûÎļþ´æÔÚ£¬°ÑÎļþ³¤¶ÈÉèΪ0

¿ÉÒÔÓá°»ò¡±°ÑÒÔÉÏÊôÐÔÁ¬½ÓÆðÀ´£¬Èçios::out|ios::binary

´ò¿ªÎļþµÄÊôÐÔȡֵÊÇ£º

0£ºÆÕͨÎļþ£¬´ò¿ª·ÃÎÊ

1£ºÖ»¶ÁÎļþ

2£ºÒþº¬Îļþ

4£ºÏµÍ³Îļþ

¿ÉÒÔÓá°»ò¡±»òÕß¡°+¡±°ÑÒÔÉÏÊôÐÔÁ¬½ÓÆðÀ´ £¬Èç3»ò1|2¾ÍÊÇÒÔÖ»¶ÁºÍÒþº¬ÊôÐÔ´ò¿ªÎļþ¡£

ÀýÈ磺ÒÔ¶þ½øÖÆÊäÈ뷽ʽ´ò¿ªÎļþc:config.sys

fstream file1;
file1.open("c:config.sys",ios::binary|ios::in,0);

Èç¹ûopenº¯ÊýÖ»ÓÐÎļþÃûÒ»¸ö²ÎÊý£¬ÔòÊÇÒÔ¶Á/дÆÕͨÎļþ´ò¿ª£¬¼´£º

file1.open("c:config.sys");<=>file1.open("c:config.sys",ios::in|ios::out,0);

ÁíÍ⣬fstream»¹ÓкÍopen()Ò»ÑùµÄ¹¹Ô캯Êý£¬¶ÔÓÚÉÏÀý£¬ÔÚ¶¨ÒåµÄʱºî¾Í¿ÉÒÔ´ò¿ªÎļþÁË£º

fstream file1("c:config.sys");

ÌØ±ðÌá³öµÄÊÇ£¬fstreamÓÐÁ½¸ö×ÓÀࣺifstream(input file stream)ºÍofstream(outpu file stream)£¬ifstreamĬÈÏÒÔÊäÈ뷽ʽ´ò¿ªÎļþ£¬¶øofstreamĬÈÏÒÔÊä³ö·½Ê½´ò¿ªÎļþ¡£

ifstream file2("c:pdos.def");//ÒÔÊäÈ뷽ʽ´ò¿ªÎļþ
ofstream file3("c:x.123");//ÒÔÊä³ö·½Ê½´ò¿ªÎļþ

ËùÒÔ£¬ÔÚʵ¼ÊÓ¦ÓÃÖУ¬¸ù¾ÝÐèÒªµÄ²»Í¬£¬Ñ¡Ôñ²»Í¬µÄÀàÀ´¶¨Ò壺Èç¹ûÏëÒÔÊäÈ뷽ʽ´ò¿ª£¬¾ÍÓÃifstreamÀ´¶¨Ò壻Èç¹ûÏëÒÔÊä³ö·½Ê½´ò¿ª£¬¾ÍÓÃofstreamÀ´¶¨Ò壻Èç¹ûÏëÒÔÊäÈë/Êä³ö·½Ê½À´´ò¿ª£¬¾ÍÓÃfstreamÀ´¶¨Òå¡£

¶þ¡¢¹Ø±ÕÎļþ

´ò¿ªµÄÎļþʹÓÃÍê³ÉºóÒ»¶¨Òª¹Ø±Õ£¬fstreamÌṩÁ˳ÉÔ±º¯Êýclose()À´Íê³É´Ë²Ù×÷£¬È磺file1.close();¾Í°Ñfile1ÏàÁ¬µÄÎļþ¹Ø±Õ¡£

Èý¡¢¶ÁдÎļþ

¶ÁдÎļþ·ÖΪÎı¾ÎļþºÍ¶þ½øÖÆÎļþµÄ¶ÁÈ¡£¬¶ÔÓÚÎı¾ÎļþµÄ¶ÁÈ¡±È½Ï¼òµ¥£¬ÓòåÈëÆ÷ºÍÎöÈ¡Æ÷¾Í¿ÉÒÔÁË£»¶ø¶ÔÓÚ¶þ½øÖƵĶÁÈ¡¾ÍÒª¸´ÔÓЩ£¬ÏÂÒª¾ÍÏêϸµÄ½éÉÜÕâÁ½ÖÖ·½Ê½

1¡¢Îı¾ÎļþµÄ¶Áд

Îı¾ÎļþµÄ¶ÁдºÜ¼òµ¥£ºÓòåÈëÆ÷(>)´ÓÎļþÊäÈë¡£¼ÙÉèfile1ÊÇÒÔÊäÈ뷽ʽ´ò¿ª£¬file2ÒÔÊä³ö´ò¿ª¡£Ê¾ÀýÈçÏ£º

file2"I Love You";//ÏòÎļþдÈë×Ö·û´®"I Love You"
int i;
file1>>i;//´ÓÎļþÊäÈëÒ»¸öÕûÊýÖµ¡£

ÕâÖÖ·½Ê½»¹ÓÐÒ»ÖÖ¼òµ¥µÄ¸ñʽ»¯ÄÜÁ¦£¬±ÈÈç¿ÉÒÔÖ¸¶¨Êä³öΪ16½øÖƵȵȣ¬¾ßÌåµÄ¸ñʽÓÐÒÔÏÂһЩ

²Ù×Ý·û ¹¦ÄÜ ÊäÈë/Êä³ö

dec ¸ñʽ»¯ÎªÊ®½øÖÆÊýÖµÊý¾Ý ÊäÈëºÍÊä³ö

endl Êä³öÒ»¸ö»»Ðзû²¢Ë¢Ð´ËÁ÷ Êä³ö

ends Êä³öÒ»¸ö¿Õ×Ö·û Êä³ö

hex ¸ñʽ»¯ÎªÊ®Áù½øÖÆÊýÖµÊý¾Ý ÊäÈëºÍÊä³ö

oct ¸ñʽ»¯Îª°Ë½øÖÆÊýÖµÊý¾Ý ÊäÈëºÍÊä³ö

setpxecision(int p) ÉèÖø¡µãÊýµÄ¾«¶ÈλÊý Êä³ö

±ÈÈçÒª°Ñ123µ±×÷Ê®Áù½øÖÆÊä³ö£ºfile1<<hex<<123;Òª°Ñ3.1415926ÒÔ5λ¾«¶ÈÊä³ö£ºfile1<<setpxecision(5)<<3.1415926¡£

2¡¢¶þ½øÖÆÎļþµÄ¶Áд

¢Ùput()

put()º¯ÊýÏòÁ÷дÈëÒ»¸ö×Ö·û£¬ÆäÔ­ÐÍÊÇofstream &put(char ch)£¬Ê¹ÓÃÒ²±È½Ï¼òµ¥£¬Èçfile1.put(¡®c¡¯);¾ÍÊÇÏòÁ÷дһ¸ö×Ö·û¡¯c¡¯¡£

¢Úget()

get()º¯Êý±È½ÏÁé»î£¬ÓÐ3ÖÖ³£ÓõÄÖØÔØÐÎʽ£º

Ò»ÖÖ¾ÍÊǺÍput()¶ÔÓ¦µÄÐÎʽ£ºifstream &get(char &ch);¹¦ÄÜÊÇ´ÓÁ÷ÖжÁȡһ¸ö×Ö·û£¬½á¹û±£´æÔÚÒýÓÃchÖУ¬Èç¹ûµ½Îļþ⣬·µ»Ø¿Õ×Ö·û¡£Èçfile2.get(x);±íʾ´ÓÎļþÖжÁȡһ¸ö×Ö·û£¬²¢°Ñ¶ÁÈ¡µÄ×Ö·û±£´æÔÚxÖС£

ÁíÒ»ÖÖÖØÔØÐÎʽµÄÔ­ÐÍÊÇ£º int get();ÕâÖÖÐÎʽÊÇ´ÓÁ÷Öзµ»ØÒ»¸ö×Ö·û£¬Èç¹ûµ½´ïÎļþ⣬·µ»ØEOF£¬Èçx=file2.get();ºÍÉÏÀý¹¦ÄÜÊÇÒ»ÑùµÄ¡£

»¹ ÓÐÒ»ÖÖÐÎʽµÄÔ­ÐÍÊÇ£ºifstream &get(char *buf,int num,char delim=¡¯n¡¯)£»ÕâÖÖÐÎʽ°Ñ×Ö·û¶ÁÈëÓÉ buf Ö¸ÏòµÄÊý×飬ֱµ½¶ÁÈëÁË num ¸ö×Ö·û»òÓöµ½ÁËÓÉ delim Ö¸¶¨µÄ×Ö·û£¬Èç¹ûûʹÓà delim Õâ¸ö²ÎÊý£¬½«Ê¹ÓÃȱʡֵ»»Ðзû¡¯n¡¯¡£ÀýÈ磺

file2.get(str1,127,¡¯A¡¯);//´ÓÎļþÖжÁÈ¡×Ö·ûµ½×Ö·û´®str1£¬µ±Óöµ½×Ö·û¡¯A¡¯»ò¶ÁÈ¡ÁË127¸ö×Ö·ûʱÖÕÖ¹¡£

¢Û¶ÁдÊý¾Ý¿é

Òª¶Áд¶þ½øÖÆÊý¾Ý¿é£¬Ê¹ÓóÉÔ±º¯Êýread()ºÍwrite()³ÉÔ±º¯Êý£¬ËüÃÇÔ­ÐÍÈçÏ£º

read(unsigned char *buf,int num);
write(const unsigned char *buf,int num);

read() ´ÓÎļþÖжÁÈ¡ num ¸ö×Ö·ûµ½ buf Ö¸ÏòµÄ»º´æÖУ¬Èç¹ûÔÚ»¹Î´¶ÁÈë num ¸ö×Ö·ûʱ¾Íµ½ÁËÎļþ⣬¿ÉÒÔÓóÉÔ±º¯Êý int gcount();À´È¡µÃʵ¼Ê¶ÁÈ¡µÄ×Ö·ûÊý£»¶ø write() ´Óbuf Ö¸ÏòµÄ»º´æÐ´ num ¸ö×Ö·ûµ½ÎļþÖУ¬ÖµµÃ×¢ÒâµÄÊÇ»º´æµÄÀàÐÍÊÇ unsigned char *£¬ÓÐʱ¿ÉÄÜÐèÒªÀàÐÍת»»¡£

Àý£º

unsigned char str1[]="I Love You";
int n[5];
ifstream in("xxx.xxx");
ofstream out("yyy.yyy");
out.write(str1,strlen(str1));//°Ñ×Ö·û´®str1È«²¿Ð´µ½yyy.yyyÖÐ
in.read((unsigned char*)n,sizeof(n));
//´Óxxx.xxxÖжÁȡָ¶¨¸öÕûÊý£¬×¢ÒâÀàÐÍת»»
in.close();out.close();

ËÄ¡¢¼ì²â EOF

³ÉÔ±º¯Êýeof()ÓÃÀ´¼ì²âÊÇ·ñµ½´ïÎļþ⣬Èç¹ûµ½´ïÎļþβ·µ»Ø·Ç0Öµ£¬·ñÔò·µ»Ø0¡£Ô­ÐÍÊÇint eof();

Àý£º

if(in.eof())ShowMessage("ÒѾ­µ½´ïÎļþβ£¡");

Îå¡¢Îļþ¶¨Î»

ºÍ CµÄÎļþ²Ù×÷·½Ê½²»Í¬µÄÊÇ£¬C++ I/Oϵͳ¹ÜÀíÁ½¸öÓëÒ»¸öÎļþÏàÁªÏµµÄÖ¸Õë¡£Ò»¸öÊǶÁÖ¸Õ룬Ëü˵Ã÷ÊäÈë²Ù×÷ÔÚÎļþÖеÄλÖã»ÁíÒ»¸öÊÇдָÕ룬ËüÏ´Îд²Ù×÷µÄλÖá£Ã¿´ÎÖ´ÐÐÊäÈë»òÊä³öʱ£¬ ÏàÓ¦µÄÖ¸Õë×Ô¶¯±ä»¯¡£ËùÒÔ£¬C++µÄÎļþ¶¨Î»·ÖΪ¶ÁλÖúÍдλÖõĶ¨Î»£¬¶ÔÓ¦µÄ³ÉÔ±º¯ÊýÊÇ seekg()ºÍ seekp()£¬seekg()ÊÇÉèÖöÁλÖã¬seekpÊÇÉèÖÃдλÖá£ËüÃÇ×îͨÓõÄÐÎʽÈçÏ£º

istream &seekg(streamoff offset,seek_dir origin);
ostream &seekp(streamoff offset,seek_dir origin);

streamoff¶¨ÒåÓÚ iostream.h ÖУ¬¶¨ÒåÓÐÆ«ÒÆÁ¿ offset ËùÄÜÈ¡µÃµÄ×î´óÖµ£¬seek_dir ±íÊ¾ÒÆ¶¯µÄ»ù׼λÖã¬ÊÇÒ»¸öÓÐÒÔÏÂÖµµÄö¾Ù£º

ios::beg£º Îļþ¿ªÍ·

ios::cur£º Îļþµ±Ç°Î»ÖÃ

ios::end£º Îļþ½áβ

ÕâÁ½¸öº¯ÊýÒ»°ãÓÃÓÚ¶þ½øÖÆÎļþ£¬ÒòΪÎı¾Îļþ»áÒòΪϵͳ¶Ô×Ö·ûµÄ½âÊͶø¿ÉÄÜÓëÔ¤ÏëµÄÖµ²»Í¬¡£

Àý£º

file1.seekg(1234,ios::cur);//°ÑÎļþµÄ¶ÁÖ¸Õë´Óµ±Ç°Î»ÖÃÏòºóÒÆ1234¸ö×Ö½Ú
file2.seekp(1234,ios::beg);//°ÑÎļþµÄдָÕë´ÓÎļþ¿ªÍ·ÏòºóÒÆ1234¸ö×Ö½Ú
   
4617 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
Visual C++±à³ÌÃüÃû¹æÔò
ÈκÎʱºò¶¼ÊÊÓõÄ20¸öC++¼¼ÇÉ
CÓïÑÔ½ø½×
´®¿ÚÇý¶¯·ÖÎö
ÇáÇáËÉËÉ´ÓCһ·×ßµ½C++
C++±à³Ì˼Ïë


C++²¢·¢´¦Àí+µ¥Ôª²âÊÔ
C++³ÌÐò¿ª·¢
C++¸ß¼¶±à³Ì
C/C++¿ª·¢
C++Éè¼ÆÄ£Ê½
C/C++µ¥Ôª²âÊÔ


±±¾© ǶÈëʽC¸ßÖÊÁ¿±à³Ì
Öйúº½¿Õ ǶÈëʽC¸ßÖÊÁ¿±à³Ì
»ªÎª C++¸ß¼¶±à³Ì
±±¾© C++¸ß¼¶±à³Ì
µ¤·ð˹ C++¸ß¼¶±à³Ì
±±´ó·½Õý CÓïÑÔµ¥Ôª²âÊÔ
ÂÞ¿ËΤ¶û C++µ¥Ôª²âÊÔ