"Á÷"¾ÍÊÇ"Á÷¶¯"£¬ÊÇÎïÖÊ´ÓÒ»´¦ÏòÁíÒ»´¦Á÷¶¯µÄ¹ý³Ì£¬±ÈÈçÎÒÃÇÄܸÐÖªµ½µÄË®Á÷¡£C++µÄÁ÷ÊÇÖ¸ÐÅÏ¢´ÓÍⲿÊäÈëÉ豸£¨Èç¼üÅ̺ʹÅÅÌ£©Ïò¼ÆËã»úÄÚ²¿£¨¼´Äڴ棩ÊäÈëºÍ´ÓÄÚ´æÏòÍⲿÊä³öÉ豸£¨ÈçÏÔʾÆ÷ºÍ´ÅÅÌ£©Êä³öµÄ¹ý³Ì£¬ÕâÖÖÊäÈëÊä³ö¹ý³Ì±»ÐÎÏ󵨱ÈÓ÷Ϊ"Á÷"¡£
ΪÁËʵÏÖÐÅÏ¢µÄÄÚÍâÁ÷¶¯£¬C++
ϵͳ¶¨ÒåÁËI/OÀà¿â£¬ÆäÖеÄÿһ¸öÀà¶¼³Æ×÷ÏàÓ¦µÄÁ÷»òÁ÷À࣬ÓÃÒÔÍê³Éijһ·½ÃæµÄ¹¦ÄÜ¡£¸ù¾ÝÒ»¸öÁ÷ÀඨÒåµÄ¶ÔÏóҲʱ³£±»³ÆÎªÁ÷¡£
ͨ³£±ê×¼ÊäÈë»ò±ê×¼Êä³öÉ豸ÏÔʾÆ÷³ÆÎª±ê×¼Á÷£»Íâ´æ´ÅÅÌÉÏÎļþµÄÊäÈëÊä³ö³ÆÎªÎļþÁ÷£»¶ÔÓÚÄÚ´æÖÐÖ¸¶¨µÄ×Ö·û´®´æ´¢¿Õ¼ä³ÆÎª×Ö·û´®Á÷¡£
ÄÇôÁ÷µÄÄÚÈÝͨ³£ÊÇÊ²Ã´ÄØ£¿
Á÷ÀïµÄ»ù±¾µ¥Î»ÊÇ×Ö½Ú£¬ËùÒÔÓÖ³ÆÎª×Ö½ÚÁ÷¡£×Ö½ÚÁ÷¿ÉÒÔÊÇASCII×Ö·û¡¢¶þ½øÖÆÊý¾Ý¡¢Í¼ÐÎͼÏñ¡¢ÒôƵÊÓÆµµÈÐÅÏ¢¡£ÎļþºÍ×Ö·û´®Ò²¿ÉÒÔ¿´³ÉÊÇÓÐÐòµÄ×Ö½ÚÁ÷£¬ÓÖ³ÆÎªÎļþÁ÷ºÍ×Ö·û´®Á÷¡£
2¡¢IOÀà
C++µÄIOÀà¿âÊôÓÚSTLµÄÒ»²¿·Ö£¬ÔÚSTLÖж¨ÒåÁËÒ»¸öÅÓ´óµÄÀà¿â£¬ËüÃǵļ̳йØÏµÎªÏÂͼ£º
image
¹ÜÀí±ê×¼µÄÊäÈë/Êä³öÁ÷µÄÀàΪ£ºistream(ÊäÈë)¡¢ostream£¨Êä³ö£©¡¢iostream£¨ÊäÈëÊä³ö£©£¬ÆäÖÐistreamºÍostreamÖ±½Ó´ÓiosÖм̳У¬iostream¶àÖØ¼Ì³ÐÁËistreamºÍotream¡£¶øcinÊÇSTLÖж¨Î»µÄÒ»¸öÓÃÓÚÊäÈëµÄistream¶ÔÏó£¬cout¡¢cerr¡¢clogÊÇÈý¸öÓÃÓÚÊä³öµÄostream¶ÔÏ󡣯äÖÐcout¶ÔÏóÒ²±»³ÆÎª±ê×¼Êä³ö£¬ÓÃÓÚÕý³£µÄÊä³ö£¬cerrÓÃÀ´Êä³ö¾¯¸æºÍ´íÎóÐÅÏ¢£¬ÒòΪ±»³ÆÎª±ê×¼´íÎ󣬶øclogÓÃÀ´Êä³ö³ÌÐòÔËÐÐʱµÄÒ»°ãÐÔÐÅÏ¢¡£cerrºÍclogÖ®¼äµÄ²»Í¬Ö®´¦ÔÚÓÚcerrÊDz»¾¹ý»º³åÇøÖ±½ÓÏòÏÔʾÆ÷Êä³öÓйØÐÅÏ¢£¬¶øclogÔòÊÇÏȰÑÐÅÏ¢·ÅÔÚ»º³åÇø£¬»º³åÇøÂúºó»òÓöÉÏendlʱÏòÏÔʾÆ÷Êä³ö¡£
¹ÜÀíÎļþÁ÷µÄÀàΪ£ºifstream£¨ÎļþÊäÈ룩¡¢ofstream£¨ÎļþÊä³ö£©ºÍfstream£¨ÎļþµÄÊäÈë/Êä³ö£©¡£ÆäÖÐifstreamÊÇ´ÓistreamÖм̳еÄÀ࣬ofstreamÊÇ´ÓostreamÖм̳еÄÀ࣬fstreamÊÇ´Óiostream¼Ì³ÐµÄÀà¡£
¹ÜÀí×Ö·û´®Á÷µÄÀàΪ£ºistringstream£¨×Ö·û´®ÊäÈ룩¡¢ostringstream£¨×Ö·û´®Êä³ö£©ºÍstringstream£¨×Ö·û´®µÄÊäÈë/Êä³ö£©¡£ÆäÖÐistringstreamÊÇ´ÓistreamÖм̳еÄÀ࣬ostringstreamÊÇ´ÓostreamÖм̳еÄÀ࣬stringstreamÊÇ´Óiostream¼Ì³ÐµÄÀà¡£
3£¬<<ºÍ>>²Ù×÷·û
3.1 <<µÄÓ÷¨
ÔÚistreamÊäÈëÁ÷ÀàÖж¨ÒåÓжÔÓÒÒÆ²Ù×÷·û>>ÖØÔØµÄÒ»×鹫ÓóÉÔ±º¯Êý£¬º¯ÊýµÄ¾ßÌåÉùÃ÷¸ñʽΪ£º
istream& operator>> (istream& is, char& c);
istream& operator>> (istream& is, signed char& c);
istream& operator>> (istream& is, unsigned char& c);
istream& operator>> (istream& is, char* s);
istream& operator>> (istream& is, signed char* s);
istream& operator>> (istream& is, unsigned char* s);
ÓÉÓÚÓÒÒÆ²Ù×÷·ûÖØÔØÓÃÓÚ¸ø±äÁ¿ÊäÈëÊý¾ÝµÄ²Ù×÷£¬ËùÒÔÓÖ³ÆÎªÌáÈ¡²Ù×÷·û£¬¼´´ÓÁ÷ÖÐÌáÈ¡³öÊý¾Ý¸³¸ø±äÁ¿¡£
µ±ÏµÍ³Ö´ÐÐcin>>variable²Ù×÷ʱ£¬½«¸ù¾Ýʵ²ÎxµÄÀàÐ͵÷ÓÃÏàÓ¦µÄÌáÈ¡²Ù×÷·ûÖØÔØº¯Êý£¬°ÑvariableÒýÓô«Ë͸ø¶ÔÓ¦µÄÐβΣ¬½Ó×Å´Ó¼üÅ̵ÄÊäÈëÖжÁÈëÒ»¸öÖµ²¢¸³¸øvariableºó£¬·µ»ØcinÁ÷£¬ÒÔ±ã¼ÌÐøÊ¹ÓÃÌáÈ¡²Ù×÷·ûΪÏÂÒ»¸ö±äÁ¿ÊäÈëÊý¾Ý¡£
µ±´Ó¼üÅÌÉÏÊäÈëÊý¾Ýʱ£¬Ö»Óе±ÊäÈëÍêÊý¾Ý²¢°´Ï»سµ¼üºó£¬ÏµÍ³²Å°Ñ¸ÃÐÐÊý¾Ý´æÈëµ½¼üÅÌ»º³åÇø£¬¹©cinÁ÷˳Ðò¶ÁÈ¡¸ø±äÁ¿¡£»¹ÓУ¬´Ó¼üÅÌÉÏÊäÈëµÄÿ¸öÊý¾ÝÖ®¼ä±ØÐëÓÿոñ»ò»Ø³µ·û·Ö¿ª£¬ÒòΪcinΪһ¸ö±äÁ¿¶ÁÈëÊý¾ÝʱÊÇÒÔ¿Õ¸ñ»ò»Ø³µ·û×÷ΪÆä½áÊø±êÖ¾µÄ¡£
µ±cin>>str_ptr²Ù×÷ÖеÄstr_ptrΪ×Ö·ûÖ¸ÕëÀàÐÍʱ£¬ÔòÒªÇó´Ó¼üÅ̵ÄÊäÈëÖжÁȡһ¸ö×Ö·û´®£¬²¢°ÑËü¸³Öµ¸østr_ptrËùÖ¸ÏòµÄ´æ´¢¿Õ¼äÖУ¬Èôstr_ptrûÓÐÊÂÏÈÖ¸ÏòÒ»¸öÔÊÐíдÈëÐÅÏ¢µÄ´æ´¢¿Õ¼ä£¬ÔòÎÞ·¨Íê³ÉÊäÈë²Ù×÷¡£ÁíÍâ´Ó¼üÅÌÉÏÊäÈëµÄ×Ö·û´®£¬ÆäÁ½±ß²»ÄÜ´øÓÐË«ÒýºÅ¶¨½ç·û£¬Èô´øÓÐÖ»×÷Ϊ˫ÒýºÅ×Ö·û¿´´ý¡£¶ÔÓÚÊäÈëµÄ×Ö·ûÒ²ÊÇÈç´Ë£¬²»ÄÜ´øÓе¥ÒýºÅ¶¨½ç·û¡£
3.2 >>µÄÓ÷¨
ÔÚostreamÊä³öÁ÷ÀàÖж¨ÒåÓжÔ×óÒÆ²Ù×÷·û<<ÖØÔØµÄÒ»×鹫ÓóÉÔ±º¯Êý£¬º¯ÊýµÄ¾ßÌåÉùÃ÷¸ñʽΪ£º
¸´ÖÆ´úÂë
istream& operator>> (bool& val);
istream& operator>> (short& val);
istream& operator>> (unsigned short& val);
istream& operator>> (int& val);
istream& operator>> (unsigned int& val);
istream& operator>> (long& val);
istream& operator>> (unsigned long& val);
istream& operator>> (long long& val);
istream& operator>> (unsigned long long& val);
istream& operator>> (float& val);
istream& operator>> (double& val);
istream& operator>> (long double& val);
istream& operator>> (void*& val);
¸´ÖÆ´úÂë
³ýÁËÓëÔÚistreamÁ÷ÀàÖÐÉùÃ÷ÓÒÒÆ²Ù×÷·ûÖØÔØº¯Êý¸ø³öµÄËùÓÐÄÚÖÃÀàÐÍÒÔÍ⣬»¹Ôö¼ÓÒ»¸övoid* ÀàÐÍ£¬ÓÃÓÚÊä³öÈκÎÖ¸Õ루µ«²»ÄÜÊÇ×Ö·ûÖ¸Õ룬ÒòΪËü½«±»×÷Ϊ×Ö·û´®´¦Àí£¬¼´Êä³öËùÖ¸Ïò´æ´¢¿Õ¼äÖб£´æµÄÒ»¸ö×Ö·û´®£©µÄÖµ¡£
ÓÉÓÚ×óÒÆ²Ù×÷·ûÖØÔØÓÃÓÚÏòÁ÷ÖÐÊä³ö±í´ïʽµÄÖµ£¬ËùÒÔÓÖ³ÆÎª²åÈë²Ù×÷·û¡£Èçµ±Êä³öÁ÷ÊÇcoutʱ£¬Ôò¾Í°Ñ±í´ïʽµÄÖµ²åÈëµ½ÏÔʾÆ÷ÉÏ£¬¼´Êä³öµ½ÏÔʾÆ÷ÏÔʾ³öÀ´¡£
µ±ÏµÍ³Ö´ÐÐcout<
4£¬IOÌõ¼þ״̬
4.1 ²éѯÁ÷µÄ״̬
IO²Ù×÷¶¼ÓпÉÄÜ·¢Éú´íÎó£¬Ò»Ð©´íÎóÊǿɻָ´µÄ£¬¶øÆäËû´íÎó·¢ÉúÔÚϵͳÉî´¦£¬ÒѾ³¬³öÁËÓ¦ÓóÌÐò¿ÉÒÔÐÞÕýµÄ·¶Î§¡£
IOÀඨÒåÁËһЩº¯ÊýºÍ±êÖ¾£¬¿ÉÒÔ°ïÖúÎÒÃÇ·ÃÎʺͲÙ×ÝÁ÷µÄÌõ¼þ״̬¡£
Ê×Ïȱíʾһ¸öÁ÷µ±Ç°µÄ״̬µÄ±äÁ¿µÄÀàÐÍΪstrm::iostate£¬ÆäÖÐstrmÊÇÒ»ÖÖÁ÷ÀàÐÍ£¬¿ÉÒÔÊÇiostream¡¢fstreamµÈ¡£±ÈÈ磬ÎÒÃǶ¨ÒåÒ»¸ö±ê×¼IOÁ÷״̬£º
iostream::iostate strm_state=iostream::goodbit;
IO¿â´æ¶¨ÒåÁË4¸öiostateÀàÐ͵ÄcontexprÖµ£¬±íÊ¾ÌØ¶¨µÄλģʽ¡£ÕâЩֵÓÃÀ´±íÊ¾ÌØ¶¨ÀàÐ͵ÄIOÌõ¼þ£¬¿ÉÒÔÓëλÔËËãÒ»Æðʹ