C++基礎(chǔ) | C++ 輸入輸出(cout、cin、cerr、clog)
發(fā)布時(shí)間:2023-11-28 14:01:16
C語(yǔ)言中,使用 scanf 和 printf 等函數(shù)來(lái)對(duì)數(shù)據(jù)進(jìn)行輸入輸出操作。在C++語(yǔ)言中,C語(yǔ)言的這一套輸入輸出庫(kù)我們?nèi)匀荒苁褂?,但?C++又提供更容易使用的輸入輸出庫(kù)(iostream、iomanip、fstream)。
1、輸入輸出
C++ 的 I/O 發(fā)生在流中,流是字節(jié)序列。如果字節(jié)流是從設(shè)備(如鍵盤(pán)、磁盤(pán)驅(qū)動(dòng)器、網(wǎng)絡(luò)連接等)流向內(nèi)存,是輸入操作。如果字節(jié)流是從內(nèi)存流向設(shè)備(如顯示屏、打印機(jī)、磁盤(pán)驅(qū)動(dòng)器、網(wǎng)絡(luò)連接等),是輸出操作。
2、C++ I/O 庫(kù)頭文件
對(duì)系統(tǒng)指定的標(biāo)準(zhǔn)設(shè)備的輸入和輸出。即從鍵盤(pán)輸入數(shù)據(jù),輸出到顯示器屏幕。這種輸入輸出稱(chēng)為標(biāo)準(zhǔn)的輸入輸出,簡(jiǎn)稱(chēng)標(biāo)準(zhǔn)I/O。以外存磁盤(pán)文件為對(duì)象進(jìn)行輸入和輸出,即從磁盤(pán)文件輸入數(shù)據(jù),數(shù)據(jù)輸出到磁盤(pán)文件。以外存文件為對(duì)象的輸入輸出稱(chēng)為文件的輸入輸出,簡(jiǎn)稱(chēng)文件I/O。對(duì)內(nèi)存中指定的空間進(jìn)行輸入和輸出。通常指定一個(gè)字符數(shù)組作為存儲(chǔ)空間(實(shí)際上可以利用該空間存儲(chǔ)任何信息)。這種輸入和輸出稱(chēng)為字符串輸入輸出,簡(jiǎn)稱(chēng)串I/O。具體如下表:
頭文件 | 函數(shù)和描述 |
<iostream> | 該文件定義了 cin、cout、cerr 和 clog 對(duì)象,分別對(duì)應(yīng)于標(biāo)準(zhǔn)輸入流、 標(biāo)準(zhǔn)輸出流、 非緩沖標(biāo)準(zhǔn)錯(cuò)誤流和緩沖標(biāo)準(zhǔn)錯(cuò)誤流。 |
<iomanip> | 該文件通過(guò)所謂的參數(shù)化的流操縱器(比如 setw和setprecision), 來(lái)聲明對(duì)執(zhí)行標(biāo)準(zhǔn)化 I/O 有用的服務(wù)。 |
<fstream> | 該文件為用戶(hù)控制的文件處理聲明服務(wù)。 我們將在文件和流的相關(guān)章節(jié)討論它的細(xì)節(jié)。 |
3、cout標(biāo)準(zhǔn)輸出
cout
可用于在計(jì)算機(jī)屏幕上顯示信息,程序可以顯示的最簡(jiǎn)單的屏幕輸出類(lèi)型是控制臺(tái)輸出,它只是純文本。 cout
是 iostream 類(lèi)的一個(gè)實(shí)例。cout
是與流插入運(yùn)算符 <<
結(jié)合使用的。
例如,
#include <iostream>
using namespace std;
int main()
{
cout << "C++ " << endl;
cout << "c java python " << "is cjavapy";
return 0;
}
注意:流插入運(yùn)算符 <<
在一個(gè)語(yǔ)句中可以多次使用。endl
用于添加一個(gè)換行符。
4、cin標(biāo)準(zhǔn)輸入
cin
可用于從鍵盤(pán)獲取用戶(hù)輸入,程序中可以獲取用戶(hù)輸入信息。 cin
是 iostream 類(lèi)的一個(gè)實(shí)例。cin
是與流提取運(yùn)算符 >>
結(jié)合使用的。
例如,
#include <iostream>
using namespace std;
int main()
{
char a;
int b;
float c;
cin >> a >> b >> c;
cout << a <<" "<< b << " " << c << " " << endl;
return 0;
}
注意:流提取運(yùn)算符 >>
在一個(gè)語(yǔ)句中可以多次使用,獲取輸入的多個(gè)數(shù)據(jù)。
5、cerr標(biāo)準(zhǔn)錯(cuò)誤
cerr
是 iostream 類(lèi)的一個(gè)實(shí)例。cerr
不經(jīng)過(guò)緩沖而直接輸出,一般用于迅速輸出出錯(cuò)信息,是標(biāo)準(zhǔn)錯(cuò)誤,默認(rèn)情況下被關(guān)聯(lián)到標(biāo)準(zhǔn)輸出流,但它不被緩沖,也就說(shuō)錯(cuò)誤消息可以直接發(fā)送到顯示器,而無(wú)需等到緩沖區(qū)或者新的換行符時(shí),才被顯示。cerr
也是與流插入運(yùn)算符 <<
結(jié)合使用的。
例如,
#include <iostream>
using namespace std;
int main()
{
cout << "cout" << endl;
cerr << "cerr" << endl;
return 0;
}
6、clog標(biāo)準(zhǔn)日志流
clog
是cerr
的緩沖版本。對(duì)于cout
和cerr
及clog
都是c++內(nèi)置的輸出流。如果你用clog
來(lái)輸出的話,則隱含的信息就是你輸出的是錯(cuò)誤信息。 clog
對(duì)象是緩沖的。這意味著每個(gè)流插入到 clog
都會(huì)先存儲(chǔ)在緩沖區(qū),直到緩沖填滿(mǎn)或者緩沖區(qū)刷新時(shí)才會(huì)輸出。clog
也是與流插入運(yùn)算符 <<
結(jié)合使用的。
例如,
#include <iostream>
using namespace std;
int main( )
{
char str[] = " c java py";
clog << "cjavapy" << str << endl;
}
以上為本次所有分享內(nèi)容