1.2.6 通過(guò)標(biāo)準(zhǔn)輸出顯示文本
main()函數(shù)體的第一行在控制臺(tái)窗口顯示Game Over!和一個(gè)換行符。
std::cout << "Game Over!" << std::endl;
“Game Over!”是字符串,即一連串可以打印的字符。從技術(shù)上而言,它是一個(gè)字符串字面值,即它就是引號(hào)中間的那些字符。
cout是在iostream文件中定義的對(duì)象,用于向標(biāo)準(zhǔn)輸出流發(fā)送數(shù)據(jù)。在大多數(shù)程序中(包括本程序),標(biāo)準(zhǔn)輸出流僅僅是指計(jì)算機(jī)屏幕中的控制臺(tái)窗口。
輸出運(yùn)算符(<<)用于向?qū)ο骳out發(fā)送字符串??梢詫⑤敵鲞\(yùn)算符想象成一個(gè)漏斗,它將開(kāi)口一端的數(shù)據(jù)收集起來(lái)并使其流向收口的一端。所以,字符串順著漏斗流向了標(biāo)準(zhǔn)輸出——屏幕。
cout的前綴std告訴編譯器這里的cout來(lái)自標(biāo)準(zhǔn)庫(kù)。std是名稱空間??梢詫⒚Q空間想象成電話號(hào)碼的區(qū)號(hào),它唯一標(biāo)識(shí)了成員所屬的組。名稱空間后面跟著作用域解析運(yùn)算符(::)。
最后,程序還向標(biāo)準(zhǔn)輸出發(fā)送了std::endl。endl在iostream中定義,它也是std名稱空間中的一個(gè)對(duì)象。向標(biāo)準(zhǔn)輸出發(fā)送endl類似于在控制臺(tái)窗口中按下回車(chē)鍵。實(shí)際上,如果此時(shí)向控制臺(tái)窗口發(fā)送另一個(gè)字符串,它將出現(xiàn)在屏幕的下一行。
這些概念可能有些難以理解。請(qǐng)看圖1-3,它以圖形方式形象地表示了所有描述過(guò)的元素之間的關(guān)系。
圖1-3 標(biāo)準(zhǔn)C++的實(shí)現(xiàn)包含了一個(gè)稱為標(biāo)準(zhǔn)庫(kù)的文件集合。標(biāo)準(zhǔn)庫(kù)包含了iostream文件。
iostream文件又包含了各種定義,其中包括cout對(duì)象的定義
1.2.7 語(yǔ)句的終止
如果留意函數(shù)的第一行,會(huì)發(fā)現(xiàn)它以一個(gè)分號(hào)(;)結(jié)尾。這是因?yàn)檫@一行是一條語(yǔ)句——控制程序執(zhí)行流程的基本單元。所有語(yǔ)句都必須以分號(hào)結(jié)尾,否則編譯器會(huì)報(bào)錯(cuò),而且不會(huì)編譯程序。
1.2.8 從main()函數(shù)返回值
函數(shù)的最后一條語(yǔ)句將0返回給操作系統(tǒng)。
return 0;
從main()函數(shù)返回0表示程序正常結(jié)束。操作系統(tǒng)與返回值無(wú)關(guān)。一般來(lái)說(shuō),可以像該程序一樣簡(jiǎn)單地返回0。
技巧
在運(yùn)行Game Over程序時(shí),可能只是看見(jiàn)控制臺(tái)窗口一閃而過(guò)。那是因?yàn)镃++太快,它在不到一秒的時(shí)間內(nèi)打開(kāi)一個(gè)控制臺(tái)窗口,顯示Game Over!,然后關(guān)閉窗口。然而,在Windows操作系統(tǒng)下,可以創(chuàng)建批處理文件,在運(yùn)行控制臺(tái)程序后暫停。這可以保持控制臺(tái)窗口處于打開(kāi)狀態(tài),以便查看程序結(jié)果。因?yàn)榫幾g后的程序名為game_over.exe,所以可以簡(jiǎn)單地創(chuàng)建由以下兩行代碼組成的批處理文件:
game_over.exe
pause
創(chuàng)建批處理文件的步驟如下:
(1) 打開(kāi)一個(gè)文本編輯器,如Notepad(不能是Word或WordPad)。
(2) 輸入文本。
(3) 以.bat擴(kuò)展名保存文件,如game_over.bat。
最后,雙擊文件圖標(biāo)運(yùn)行批處理文件。因?yàn)榕幚砦募?huì)使控制臺(tái)窗口處于打開(kāi)狀態(tài),這時(shí)應(yīng)當(dāng)能看到程序結(jié)果。