C++入門(mén)(基本數(shù)據(jù)類型與輸入輸出)

輸入輸出


控制臺(tái)(console)是電腦的最基本交互接口,通常包括鍵盤(pán)(keyboard)和屏幕(screen)自晰。鍵盤(pán)通常為標(biāo)準(zhǔn)輸入設(shè)備,而 屏幕為標(biāo)準(zhǔn)輸出設(shè)備。

而在程序的編寫(xiě)或是學(xué)習(xí)中必然要涉及到屏幕上顯示輸出并從鍵盤(pán)接收用戶的輸入過(guò)程褐鸥,本節(jié)將重點(diǎn)學(xué)習(xí)如何在控制臺(tái)下編寫(xiě)輸入輸出。?????


控制臺(tái)界面


控制臺(tái)打開(kāi)方式:

1赐稽、開(kāi)始叫榕,運(yùn)行,鍵入cmd 姊舵,回車

2晰绎、快捷鍵:Win + R , 鍵入cmd 括丁, 回車



C++沒(méi)有輸入輸出語(yǔ)句荞下,C++通過(guò)標(biāo)準(zhǔn)類庫(kù)來(lái)擴(kuò)展語(yǔ)言功能,例如利用輸入輸出類庫(kù)來(lái)擴(kuò)展語(yǔ)言的輸入輸出功能史飞。

標(biāo)準(zhǔn)庫(kù)中定義了大量輸入輸出類

①輸入輸出流類iostream的定義在iostream.h中

②文件流類fstream的定義在fstream.h中 file

③格式化輸入輸出流類的定義在iomanip.h中

輸入輸出類的繼承關(guān)系圖如下:

C++使用輸入輸出流“stream”的方式來(lái)實(shí)現(xiàn)的尖昏。

流指來(lái)自設(shè)備或者發(fā)送給設(shè)備的數(shù)據(jù)。

cout是輸出流的對(duì)象名稱构资,cin是輸入流的對(duì)象名稱抽诉。

下圖為輸入輸出流的使用關(guān)系圖:

有關(guān)cout和cin都是存放在C++的輸入輸出流庫(kù)中的,如果使用就必須在預(yù)處理中包含以下信息:

#include <iostream>

using namespace std;

從這點(diǎn)也能看出cout和cin不是C++提供的語(yǔ)句吐绵,因?yàn)镃++本身提供的語(yǔ)句迹淌,例如int,if等在使用的時(shí)候不需要在預(yù)處理中包含任何信息。

cout語(yǔ)句的格式為:cout<<表達(dá)式1<<表達(dá)式2<<……<<表達(dá)式n<<endl;

cin語(yǔ)句的格式為:cin>>變量1>>變量2>>……>>變量n;

cout語(yǔ)句的輸出也可以分為多行:

例如要輸出helloWorld以下的代碼都是正確的己单。

方法一:

#include <iostream>

using namespace std;

void main()

{

cout<<"hello";

cout<<"World"<<endl;

system("pause");

}

方法二:

#include <iostream>

using namespace std;

void main()

{

cout<<"hello"

<<"World"

<<endl;

system("pause");

}

需要注意cout不支持插入多個(gè)輸出項(xiàng)唉窃,例如以下代碼是錯(cuò)誤的:cout<<a,b,c<<endl;

而以下是正確的,因?yàn)楸磉_(dá)式作為了一項(xiàng):cout<<a+b+c<<endl;

使用cout做輸出流的時(shí)候不必考慮輸出的數(shù)據(jù)類型纹笼,因?yàn)閏out會(huì)按輸出數(shù)據(jù)的相應(yīng)類型進(jìn)行輸出句携。

與cout相似,cin也支持多行輸入,例如以下代碼:

方法一:

#include <iostream>

using namespace std;

void main()

{

int a,b,c;

cin>>a>>b>>c;

system("pause");

}

方法二:
#include <iostream>

using namespace std;

void main()

{

int iValue1,iValue2,iValue3;

cin>>iValue1;

如果使用控制符允乐,在預(yù)處理中還要加入#include <iomanip>

在編輯器寫(xiě)入以下代碼矮嫉,編譯并查看結(jié)果:

cin>>iValue2;

cin>>iValue3;

system("pause");

}

在使用輸入流的時(shí)候削咆,要注意cin語(yǔ)句中要輸入的數(shù)據(jù)類型,按照相應(yīng)的數(shù)據(jù)類型的格式輸入蠢笋,否則會(huì)出錯(cuò)誤拨齐。

在輸入輸出中,會(huì)有些特殊要求昨寞,例如輸出字段的寬度瞻惋,這里將要使用到控制符。

下表為常用控制符:

如果使用控制符援岩,在預(yù)處理中還要加入#include <iomanip>

在編輯器寫(xiě)入以下代碼歼狼,編譯并查看結(jié)果:

#include <iostream>

#include <iomanip>

using namespace std;

void main()

{

cout<<"hello"<<setw(10)<<"World"<<endl;

system("pause");

}


與C++語(yǔ)言不同,C語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供了兩個(gè)控制臺(tái)格式化輸入輸出函數(shù)printf( ) 和scanf(), 這兩個(gè)函數(shù)可以在標(biāo)準(zhǔn)輸入輸出設(shè)備上以各種不同的格式讀寫(xiě)數(shù)據(jù)享怀。

printf()函數(shù)用來(lái)向標(biāo)準(zhǔn)輸出設(shè)備(屏幕)寫(xiě)數(shù)據(jù)羽峰,scanf() 函數(shù)用來(lái)從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤(pán))上讀數(shù)據(jù)。下面詳細(xì)介紹這兩個(gè)函數(shù)的用法添瓷。

在代碼編輯區(qū)鍵入以下代碼:( C語(yǔ)言的HelloWorld的寫(xiě)法 )

【F7】編譯梅屉,【Ctrl+F5】運(yùn)行,如圖所示運(yùn)行

#include <stdio.h>

void main()

{

printf("HelloWorld\n");

}



printf()函數(shù)


printf()函數(shù)是格式化輸出函數(shù), 一般用于向標(biāo)準(zhǔn)輸出設(shè)備按規(guī)定格式輸出信息鳞贷。在編寫(xiě)程序時(shí)經(jīng)常會(huì)用到此函數(shù)坯汤。printf()函數(shù)的調(diào)用格式為:

printf("字符串格式", 參量表);

例如以下代碼:

#include <stdio.h>

void? main()

{

printf("helloWorld\n");

int iValue = 200;

printf("price is %d\n",iValue);

}

格式化字符串包括兩部分內(nèi)容: 一部分是正常字符, 這些字符將按原樣輸出。另一部分是格式化規(guī)定字符, 以"%"開(kāi)始, 后跟一個(gè)或幾個(gè)規(guī)定字符,用來(lái)確定輸出內(nèi)容格式搀愧。

參量表是需要輸出的一系列參數(shù), 其個(gè)數(shù)必須與格式化字符串所說(shuō)明的輸出參數(shù)個(gè)數(shù)一樣多, 各參數(shù)之間用","分開(kāi), 且順序一一對(duì)應(yīng), 否則將會(huì)錯(cuò)誤惰聂。

printf(“helloWorld\n”)其中的helloWorld就為正常字符,它將原樣輸出咱筛。

printf(“price is %d\n”,value)其中的%d為格式化字符庶近,確定了整型數(shù)據(jù)類型。

printf(“price is %d\n”,value)其中的 \n 為轉(zhuǎn)義字符具有換行功能眷蚓。

(\n 功能等同于C++輸出中的 endl)

其中格式化規(guī)定字符如下:


printf()函數(shù)可以在"%"和字母之間插進(jìn)數(shù)字表示最大場(chǎng)寬鼻种。

可以在"%"和字母之間插進(jìn)數(shù)字表示最大場(chǎng)寬。

例如: %3d表示輸出3位整型數(shù), 不夠3位右對(duì)齊沙热。

? ? ? ? %9.2f 表示輸出場(chǎng)寬為9的浮點(diǎn)數(shù), 其中小數(shù)位為2, 整數(shù)位為6, 小數(shù)點(diǎn)? 占一位, 不夠9位右對(duì)齊叉钥。

? ? ? ? %8s表示輸出8個(gè)字符的字符串, 不夠8個(gè)字符右對(duì)齊。

在編輯器寫(xiě)入以下代碼篙贸,編譯并查看結(jié)果:

#include <stdio.h>

void main()

{

printf("%3d\n",15);

printf("%9.2f\n",3.141592f);

}

若想在輸出值前加一些0, 就應(yīng)在場(chǎng)寬項(xiàng)前加個(gè)0投队。

例如:?? %04d 表示在輸出一個(gè)小于4位的數(shù)值時(shí), 將在前面補(bǔ)0使其總寬度為4位。

如果用浮點(diǎn)數(shù)表示字符或整型量的輸出格式, 小數(shù)點(diǎn)后的數(shù)字代表最大寬度,小數(shù)點(diǎn)前的數(shù)字代表最小寬度爵川。

在編輯器寫(xiě)入以下代碼敷鸦,編譯并查看結(jié)果:

#include <stdio.h>

void main()

{

printf("%03d\n",15);

}

在以上的所有代碼中經(jīng)常可以看到\n這個(gè)特殊符號(hào),發(fā)現(xiàn)它的作用是換行扒披,下表為特殊符號(hào)的概括值依。




scanf()函數(shù)


scanf()函數(shù)是格式化輸入函數(shù), 它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤(pán)) 讀取輸入的信息。

其調(diào)用格式為:? ? ? scanf("字符串格式", 地址表);

格式化字符串包括以下三類不同的字符:

?1. 格式化說(shuō)明符: 格式化說(shuō)明符與printf()函數(shù)中的格式說(shuō)明符基本相同碟案。

2. 空白字符: 空白字符會(huì)使scanf()函數(shù)在讀操作中略去輸入中的一個(gè)或多個(gè)空白字符愿险。

?3. 非空白字符: 一個(gè)非空白字符會(huì)使scanf()函數(shù)在讀入時(shí)剔除掉與這個(gè)非空白字符相同的字符。

地址表是需要讀入的所有變量的地址, 而不是變量本身价说。這與printf()函數(shù)完全不同, 要特別注意辆亏。各個(gè)變量的地址之間同","分開(kāi)。

scanf()函數(shù)先讀一個(gè)整型數(shù), 然后把接著輸入的逗號(hào)剔除掉, 最 后讀入另一個(gè)整型數(shù)鳖目。如果","這一特定字符沒(méi)有找到, scanf()函數(shù)就終止若 參數(shù)之間的分隔符為空格, 則參數(shù)之間必須輸入一個(gè)或多個(gè)空格扮叨。

在編輯器寫(xiě)入以下代碼,編譯并查看結(jié)果:

#include <stdio.h>

void main()

{

int iValue1, iValue2;

? ? ? ? ? ? ? scanf( "%d, %d", &iValue1, &iValue2 );

printf(" iValue1? is %d, iValue2? is %d", iValue1, iValue2);

}

調(diào)試器的輸出功能


<windows.h> 文件聲明了 OutputDebugString() 函數(shù)领迈。使用一個(gè) NULL 結(jié)尾的字符串并簡(jiǎn)單調(diào)用 OutputDebugString() 將使信息出現(xiàn)在vs2005調(diào)試器中彻磁。

在編輯器寫(xiě)入以下代碼,編譯并查看結(jié)果:????

#include <windows.h>

void main()

{

OutputDebugString(L"helloWorld");

}

【Ctrl+F5】運(yùn)行后如圖位置查看結(jié)果:

輸入輸出是學(xué)習(xí)程序的一個(gè)新的起點(diǎn)惦费,掌握這些技術(shù)可以方便的查看自己所編寫(xiě)的程序的過(guò)程或者結(jié)果兵迅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末抢韭,一起剝皮案震驚了整個(gè)濱河市薪贫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刻恭,老刑警劉巖瞧省,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鳍贾,居然都是意外死亡鞍匾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)骑科,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)橡淑,“玉大人,你說(shuō)我怎么就攤上這事咆爽×禾模” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵斗埂,是天一觀的道長(zhǎng)符糊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)呛凶,這世上最難降的妖魔是什么男娄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上模闲,老公的妹妹穿的比我還像新娘建瘫。我一直安慰自己,他們只是感情好围橡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布暖混。 她就那樣靜靜地躺著,像睡著了一般翁授。 火紅的嫁衣襯著肌膚如雪拣播。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天收擦,我揣著相機(jī)與錄音贮配,去河邊找鬼。 笑死塞赂,一個(gè)胖子當(dāng)著我的面吹牛泪勒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宴猾,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼圆存,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了仇哆?” 一聲冷哼從身側(cè)響起沦辙,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讹剔,沒(méi)想到半個(gè)月后油讯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡延欠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年陌兑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片由捎。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兔综,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狞玛,到底是詐尸還是另有隱情最筒,我是刑警寧澤断盛,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布勺疼,位于F島的核電站忌怎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蒙畴。R本人自食惡果不足惜贰镣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一呜象、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碑隆,春花似錦恭陡、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至劫狠,卻和暖如春拴疤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背独泞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工呐矾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懦砂。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓蜒犯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親荞膘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子罚随,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容