C++µÄÄÇЩÊ£ºÁ÷ÓëIOÀà(ËÄ)

2014-11-24 12:41:39 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 3
6£¬Ê¹ÓÃÎļþÁ÷
6.1 ʹÓÃÎļþÁ÷¶ÔÏó
´´½¨Ò»¸öÎļþÁ÷¶ÔÏóʱ£¬ÎÒÃÇ¿ÉÒÔÌṩÎļþÃû£¬Ò²¿É²»ÌṩÎļþÃû£¬ºóÃæÓÃopen³ÉÔ±º¯ÊýÀ´´ò¿ªÎļþ¡£
string infile="../input.txt";
string outfile = "../output.txt";
ifstream in(infile); // ¶¨Òåʱ´ò¿ªÎļþ
ofstream out;
out.open(outfile); // ÓÃopen´ò¿ªÎļþ
Èç¹ûµ÷ÓÃopenʧ°Ü£¬failbit»á±»ÖÃ룬ËùÒÔµ÷ÓÃopenʱ½øÐмì²âͨ³£ÊÇÒ»¸öºÃϰ¹ß¡£
Èç¹ûÓÃÒ»¸ö¶ÁÎļþÁ÷ifstreamÈ¥´ò¿ªÒ»¸ö²»´æÔÚµÄÎļþ£¬½«µ¼Ö¶Áȡʧ°Ü£¬¶øÈç¹ûÓÃһдÎļþÁ÷ofstreamÈ¥´ò¿ªÒ»¸öÎļþ£¬Èç¹ûÎļþ²»´æÔÚ£¬Ôò»á´´½¨Õâ¸öÎļþ¡£
Ò»µ©Ò»¸öÎļþÁ÷ÒѾ­±»´ò¿ª£¬Ëü¾Í±£³ÖÓë¶ÔÓ¦ÎļþµÄ¹ØÁª¡£Êµ¼ÊÉÏ£¬¶ÔÒ»¸öÒѾ­´ò¿ªµÄÎļþÁ÷µ÷ÓÃopen»áʧ°Ü£¬²¢»áµ¼ÖÂfailbit±»ÖÃλ£¬ËæºóµÄÊÔͼʹÓÃÎļþÁ÷µÄ²Ù×÷¶¼»áʧ°Ü¡£ÎªÁ˽«ÎļþÁ÷¹ØÁªµ½ÁíÍâÒ»¸öÎļþ£¬±ØÐëÊ×ÏȹرÕÒѾ­¹ØÁªµÄÎļþ¡£¹Ø±ÕÒ»¸öÁ÷µÄ¹ØÁªÎļþ¿ÉÒÔÓÃclose³ÉÔ±º¯ÊýÀ´Íê³É¡£
6.2 Îļþģʽ
ÿ¸öÁ÷¶¼ÓÐÒ»¸ö¹ØÁªµÄÎļþģʽ£¬ÓÃÀ´Ö¸³öÈçºÎʹÓÃÎļþ£¬ÏÂÃæÁгöÁËÎļþģʽºÍËüÃǵĺ¬Ò壺
in
ÒÔ¶Á·½Ê½´ò¿ª
out
ÒÔд·½Ê½´ò¿ª
app
ÿ´Îд²Ù×÷¾ù¶¨Î»µ½Îļþĩβ
ate
´ò¿ªÎļþºóÁ¢¼´¶¨Î»µ½Îļþĩβ
trunc
½Ø¶ÏÎļþ
binary
ÒÔ¶þ½øÖÆ·½Ê½½øÐÐIO
ÓÃÎļþÃû³õʼ»¯Ò»¸öÁ÷ʱ»òÓÃopen´ò¿ªÎļþʱ¶¼¿ÉÒÔÖ¸¶¨Îļþģʽ£¬µ«Òª×¢ÒâÏÂÃæ¼¸ÖÖÏÞÖÆ£º
<1>Ö»¿ÉÒÔ¶Ôofstream»òfstream¶ÔÏóÉ趨outģʽ¡£
<2>Ö»¿ÉÒÔ¶Ôifstream»òfstream¶ÔÏóÉ趨inģʽ¡£
<3>Ö»ÓÐoutÉ趨ʱ²Å¿ÉÒÔÉ趨truncģʽ¡£
<4>Ö»ÒªtruncûÓб»É趨£¬¾Í¿ÉÒÔÉ趨appģʽ¡£ÔÚappģʽÏ£¬¼´Ê¹Ã»ÓÐÏÔʽָ¶¨outģʽ £¬ÎļþÒ²×ÜÊÇÒÔÊä³ö·½Ê½±»´ò¿ª¡£
<5>ĬÈÏÇé¿öÏ£¬¼´Ê¹ÎÒÃÇûÓÐÖ¸¶¨trunc£¬ÒÔoutģʽ´ò¿ªµÄÎļþÒ²»á±»½Ø¶Ï¡£ÎªÁ˱£ÁôÒÔoutģʽ´ò¿ªµÄÎļþµÄÄÚÈÝ£¬ÎÒÃDZØÐëͬʱָ¶¨appģʽ£¬ÕâÑùÖ»»á½«Êý¾Ý×·¼Óдµ½Îļþĩβ£»»òÕßͬʱָ¶¨inģʽ£¬¼´´ò¿ªÎļþͬʱ½øÐжÁд²Ù×÷¡£
<6>ateºÍbinaryģʽ¿ÉÒÔÓÃÓÚÈκÎÀàÐ͵ÄÎļþÁ÷¶ÔÏó£¬ÇÒ¿ÉÒÔÓëÆäËûÈκÎÎļþģʽ×éºÏʹÓá£
ÒÔoutģʽ´ò¿ªÎļþ»á¶ªÆúÒÑÓÐÊý¾Ý£¬ËùÒÔ×èÖ¹Ò»¸öofstreamÇå¿Õ¸ø¶¨ÎļþÄÚÈݵķ½·¨ÊÇͬʱָ¶¨appģʽ¡£
¸´ÖÆ´úÂë
// ÔÚÕ⼸ÌõÓï¾äÖУ¬file1¶¼±»½Ø¶Ï
ofstream out("file1"); // Òþº¬ÒÔÊä³öģʽ´ò¿ªÎļþ²¢½Ø¶ÏÎļþ
ofstream out2("file1", ofstream::out); // Òþº¬µØ½Ø¶ÏÎļþ
ofstream out3("file1", ofstream::out | ofstream::trunc); // ÏÔʽ½Ø¶ÏÎļþ
// ΪÁ˱£ÁôÎļþÄÚÈÝ£¬ÎÒÃDZØÐëÏÔʽָ¶¨app
ofstream app("file2", ofstream::app); // Òþº¬ÎªÊä³öģʽ
ofstream app("file2", ofstream::app | ofstream::out);
¸´ÖÆ´úÂë
7£¬Ê¹ÓÃ×Ö·ûÁ÷
sstreamÍ·Îļþ¶¨ÒåÁËÈý¸öÀàÐÍÀ´Ö§³ÖÄÚ´æIO£¬ÕâЩÀàÐÍ¿ÉÒÔÏòstringдÈëÊý¾Ý£¬´Óstring¶ÁÈ¡Êý¾Ý£¬¾ÍÏñstringÊÇÒ»¸öIOÁ÷Ò»Ñù¡£
7.1 ʹÓÃistringstream
ºÜ¶àʱºòÎÒÃÇÐèÒªÖðÐд¦ÀíÎı¾£¬¶øÇÒÐèÒª¶ÔÐÐÄڵĵ¥´Ê½øÐе¥¶À·ÖÎö£¬ÕâʱºòʹÓÃistringstreamÊǺܷ½±ãµÄ¡£
±ÈÈ磬ÎÒÃdzÌÐòÐèÒªÒ»´Î¶ÁȡһÐÐÎı¾£¬È»ºó½«ÆäÖеĵ¥´Ê·Ö±ðÈ¡³ö±£´æÔÚÒ»¸övectorÖС£
¸´ÖÆ´úÂë
string line,word;
while (getline(cin, line))
{
vector wordList;
istringstream lineText(line);
while (lineText >> word)
{
wordList.push_back(word);
}
}
¸´ÖÆ´úÂë
7.2 ʹÓÃostringstream
µ±ÎÒÃÇÖð²½¹¹ÔìÊä³öʱ£¬Ï£Íû×îºóÒ»Æð´òӡʱ£¬ostringstreamÊǺÜÓÐÓõģ¬Ëü¿ÉÒÔ°ïÎÒÃÇÍê³ÉÀàËÆÓÚitoa,ftoaÕâÖÖÊý×Öת×Ö·û´®µÄ¹¦ÄÜ¡£
¸´ÖÆ´úÂë
int num1 = 42;
double pi = 3.1415926;
string str = "some numbers";
ostringstream formatted;
formatted << str << pi << num1;
cout << formatted.str() << endl;
¸´ÖÆ´úÂë
ÆäÖÐstr³ÉÔ±º¯ÊýÊÇstringstreamÓм¸¸öÌØÓвÙ×÷Ö®Ò»¡£
string s;
stringstream strm(s);// ±£´æsµÄÒ»¸ö¿½±´£¬´Ë¹¹Ô캯ÊýÊÇexplicitµÄ¡£
strm.str(); // ·µ»ØstrmËù±£´æµÄstring¶ÔÏóµÄ¿½±´¡£
strm.str(s); // ½«s¿½±´µ½strmÖУ¬·µ»Øvoid¡£
8£¬¸ñʽ»¯ÊäÈëÊä³ö
8.1 ²Ù×Ý·û
±ê×¼¿â¶¨ÒåÁËÒ»×é²Ù×Ý·ûÓÃÀ´ÐÞ¸ÄÁ÷µÄ״̬£¬Ò»¸ö²Ù×Ý·ûÊÇÒ»¸öº¯Êý»òÊÇÒ»¸ö¶ÔÏ󣬻áÓ°ÏìÁ÷µÄ״̬£¬²¢ÄÜÓÃ×÷ÊäÈë»òÊä³öÔËËã·ûµÄÔËËã¶ÔÏ󣬱ÈÈçÎÒÃÇÊìϤµÄendl£¬¾ÍÊÇÒ»¸ö²Ù×Ý·û¡£
²Ù×Ý·ûÓÃÓÚÁ½´óÀàÊä³ö¿ØÖÆ£º¿ØÖÆÊýÖµµÄÊä³öÐÎʽÒÔ¼°¿ØÖƲ¹°×µÄÊýÁ¿ºÍλÖ㬴ó¶àÊý¸Ä±ä¸ñʽ״̬µÄ²Ù×Ý·û¶¼ÊÇÉèÖÃ/¸´Ô­³É¶ÔµÄ£ºÒ»¸ö²Ù×Ý·ûÓÃÀ´½«¸ñʽ״̬ÉèÖÃΪһ¸öÐÂÖµ£¬¶øÁíÒ»¸öÓÃÀ´½«Æä¸´Ô­£¬»Ö¸´ÎªÕý³£Ä¬Èϸñʽ¡£
8.2 ¿ØÖƲ¼¶ûÖµµÄ¸ñʽ
ͨ¹ýÉèÖÃboolalpha¿ÉÒÔ½«boolÐͱäÁ¿µÄtrueÊä³öΪtrue»ò½«falseÊä³öΪfalse¡£¿ÉÒÔÉèÖÃnoboolalphaÀ´½«ÄÚ²¿×´Ì¬»Ö¸´ÎªÄ¬Èϸñʽ¡£
¸´ÖÆ´úÂë
// modify boolalpha flag
#include // std::cout, std::boolalpha, std::noboolalpha
int main () {
bool b = true;
std::cout << std::boolalpha << b << '\n';
std::cout << std::noboolalpha << b << '\n';
return 0;
}
¸´ÖÆ´úÂë
8.3 Ö¸¶¨ÕûÐÎÖµµÄ½øÖÆ
ĬÈÏÇé¿öÊÇÒÔÊ®½øÖƸñʽÊä³ö£¬ÎÒÃÇ¿ÉÒÔÉèÖò»Í¬µÄ¸ñʽ²Ù×Ý·ûÀ´¸Ä±äÊä³öÕûÐÍÖµµÄ½øÖÆ¡£
oct£ºÒ԰˽øÖÆÏÔʾ
hex£ºÒÔÊ®Áù½øÖÆÏÔʾ
dec£ºÒÔÊ®½øÖÆÏÔʾ
ÁíÍâ¿ÉÒÔʹÓÃshowbase²Ù×Ý·ûÀ´ÏÔʽ¸ñʽµÄǰ׺£¬8½øÖÆÇ°ÓÐǰµ¼0£¬Ê®Áù½øÖÆÓÐǰµ¼0x¡£²Ù×Ý·ûnoshowbase»Ö¸´coutµÄ״̬£¬´Ó¶ø