日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

c++清空输入缓冲区_干货 | C++的输入输出方法

發(fā)布時(shí)間:2023/12/10 c/c++ 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++清空输入缓冲区_干货 | C++的输入输出方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ?C和C++并沒有將輸入與輸出實(shí)現(xiàn)在語言中,而是在類庫(kù)中實(shí)現(xiàn)。作為C的超集,C++繼承了C的輸入輸出方法。同時(shí)將輸入與輸出視為字流。流充當(dāng)了程序和流源流目標(biāo)之間的橋梁。本文將介紹C++的輸入輸出方式,并且淺談C與C++均有的輸入輸出方式

對(duì)C++有一定學(xué)習(xí)的同學(xué)可以很輕松的寫出一下代碼

在這段代碼中,我們聲明了包含了iostream庫(kù),聲明了整型變量a,訪問名詞空間std用其中的對(duì)象cin在流提取運(yùn)算符>>的作用下輸入了變量a,再次訪問名詞空間std,其中的對(duì)象cout在流插入符的作用下插入變量a到輸出流從而輸出。

下面我們來淺顯的分析一下這段代碼。

首先是類庫(kù)iostream.iostream的意思是輸入輸出流,直接點(diǎn)說就是in(輸入)out(輸出)stream(流),取in、out的首字母與stream合成。iostream庫(kù)的基礎(chǔ)是兩種命名為istream和ostream的類型,分別表示輸入流和輸出流。流是指要從某種IO設(shè)備上讀出或?qū)懭氲淖址蛄小Pg(shù)語“流”試圖說明字符是隨著時(shí)間順序生成或消耗的。標(biāo)準(zhǔn)庫(kù)定義了4個(gè)IO對(duì)象。處理輸入時(shí)使用命名為cin的istream類型對(duì)象。這個(gè)對(duì)象也稱為標(biāo)準(zhǔn)輸入。處理輸出時(shí)使用命名為cout的ostream類型對(duì)象,這個(gè)對(duì)象也稱為標(biāo)準(zhǔn)輸出。標(biāo)準(zhǔn)庫(kù)還定義了另外兩個(gè)ostream對(duì)象,分別命名為cerr和clog。cerr對(duì)象又叫作標(biāo)準(zhǔn)錯(cuò)誤,通常用來輸出警告和錯(cuò)誤信息給程序的使用者。而clog對(duì)象用于產(chǎn)生程序執(zhí)行的一般信息。

一、輸入流與輸出流的基本操作

輸入和輸出并不是C++語言中的正式組成成分。C和C++本身都沒有為輸入和輸出提供專門的語句結(jié)構(gòu)。輸入輸出不是由C++本身定義的,而是在編譯系統(tǒng)提供的I/O庫(kù)中定義的。C++的輸出和輸入是用“流”(stream)的方式實(shí)現(xiàn)的。圖3.2和圖3.3表示C++通過流進(jìn)行輸入輸出的過程。

有關(guān)流對(duì)象cin、cout和流運(yùn)算符的定義等信息是存放在C++的輸入輸出流庫(kù)中的,因此如果在程序中使用cin、cout和流運(yùn)算符,就必須使用預(yù)處理命令把頭文件stream包含到本文件中:

盡管cin和cout不是C++本身提供的語句,但是在不致混淆的情況下,為了敘述方便,常常把由cin和流提取運(yùn)算符“>>”實(shí)現(xiàn)輸入的語句稱為輸入語句或cin語句,把由cout和流插入運(yùn)算符“<

cout語句的一般格式為:

cout<

cin語句的一般格式為:

cin>>變量1>>變量2>>……>>變量n;

在定義流對(duì)象時(shí),系統(tǒng)會(huì)在內(nèi)存中開辟一段緩沖區(qū),用來暫存輸入輸出流的數(shù)據(jù)。在執(zhí)行cout語句時(shí),先把插入的數(shù)據(jù)順序存放在輸出緩沖區(qū)中,直到輸出緩沖區(qū)滿或遇到cout語句中的endl(或'\n',ends,flush)為止,此時(shí)將緩沖區(qū)中已有的數(shù)據(jù)一起輸出,并清空緩沖區(qū)。輸出流中的數(shù)據(jù)在系統(tǒng)默認(rèn)的設(shè)備(一般為顯示器)輸出。

在用cins輸入cout輸出時(shí),我們不必通知計(jì)算機(jī)按何種類型輸出,系統(tǒng)會(huì)自動(dòng)判別輸出數(shù)據(jù)的類型,使輸出的數(shù)據(jù)按相應(yīng)的類型輸出。例如

我們可以同時(shí)對(duì)整型變量a浮點(diǎn)型b,字符型c,字符串型d進(jìn)行輸入輸出。

二、在輸入流與輸出流中使用控制符

上面我們介紹的是使用cout和cin時(shí)的默認(rèn)格式。但有時(shí)人們?cè)谳斎胼敵鰰r(shí)有一些特殊的要求,如在輸出實(shí)數(shù)時(shí)規(guī)定字段寬度,只保留兩位小數(shù),數(shù)據(jù)向左或向右對(duì)齊等。C++提供了在輸入輸出流中使用的控制符(有的書中稱為操縱符)。

需要注意的是:如果使用了控制符,在程序單位的開頭除了要加iostream頭文件外,還要加iomanip頭文件。

例一:輸出雙精度數(shù)

程序結(jié)果

例二:整數(shù)輸出

程序結(jié)果

三:輸入的技巧淺談

下面我們通過幾個(gè)情景來講解一部分輸入的技巧1輸入一行字符,其中含有空格。再次使用cin會(huì)再中途遇到空格時(shí)停止讀入,所以我們可以使用getline函數(shù)來完整的讀入一行。此函數(shù)在庫(kù)string中。

效果如圖

其函數(shù)原型如下

下面我們簡(jiǎn)單的分析一下這個(gè)函數(shù)

01

這個(gè)函數(shù)返回的是一個(gè)流對(duì)象,這個(gè)暫時(shí)我們不討論,但注意cin返回的亦是一個(gè)流對(duì)象。然后便是函數(shù)的參數(shù),第一個(gè)參數(shù)是一個(gè)istream的輸入流對(duì)象,這里我們用cin就好。然后便是一個(gè)字符串參數(shù),表示我們要把從istream對(duì)象輸入進(jìn)來的數(shù)據(jù)存放在那個(gè)字符串里面。最后一個(gè)參數(shù)是截至字符,表示讀到該字符后停止輸入,默認(rèn)為換行字符’\n’

02

輸入任意行字符,其中有空格。可以理解為輸入一篇文章。將getline函數(shù)放入while循環(huán)中不斷讀入。由于getline函數(shù)返回一個(gè)流對(duì)象,所以可以作為bool值進(jìn)行判斷,所以我們就可以不斷調(diào)用函數(shù),直到?jīng)]有字符讀入為止。

假設(shè)文章不超過maxn行

03

讀入若干行整數(shù),每行整數(shù)數(shù)量不確定,求每行的和及輸入的整數(shù)的個(gè)數(shù)

解決方案:把讀入的一整行字符串再次轉(zhuǎn)換成一條輸入流,讀入到整數(shù)中,將字符串轉(zhuǎn)化成輸入流需要包含庫(kù)sstream

效果圖如下

輸入輸出的運(yùn)算符重載隨著編程的復(fù)雜程度提升,我們不滿足于語言自

帶的數(shù)據(jù)類型,開始定義了類來實(shí)現(xiàn)模塊化編程,但是如果又追求實(shí)現(xiàn)簡(jiǎn)潔優(yōu)雅的用cincout 來輸入輸出對(duì)象,這時(shí)候我們就可以實(shí)現(xiàn)對(duì)插入運(yùn)算符<>的重載來達(dá)到我們的目的.

然后我們就可以愉快的輸入輸出student類了

效果如圖

文件的輸入輸出到目前為止,我們的輸入輸出都只是建立再對(duì)終端窗口的交互之中。在實(shí)際中,更多的是從文件中讀入和輸出數(shù)據(jù)。接下來,我們介紹若干種對(duì)文件中數(shù)據(jù)的讀入和寫入的方式。freopen我們先包含一個(gè)包含庫(kù)cstdio,便可以調(diào)用freopen函數(shù),之后我們的輸入輸出都會(huì)重定向到指定文件。

函數(shù)原型如下

參數(shù)說明:

path:文件名,用于存儲(chǔ)輸入輸出的自定義文件名。

mode:文件打開的模式。和fopen中的模式(如r-只讀,w-寫)相同。

stream:一個(gè)文件,通常使用標(biāo)準(zhǔn)流文件。

返回值:成功,則返回一個(gè)path所指定文件的指針;失敗,返回NULL。功能:實(shí)現(xiàn)重定向,把預(yù)定義的標(biāo)準(zhǔn)流文件定向到由path指定的文件中。標(biāo)準(zhǔn)流文件:具體是指stdin、stdout和stderr。其中stdin是標(biāo)準(zhǔn)輸入流,默認(rèn)為鍵盤;stdout是標(biāo)準(zhǔn)輸出流,默認(rèn)為屏幕;stderr是標(biāo)準(zhǔn)錯(cuò)誤流,一般把屏幕設(shè)為默認(rèn)。使用fstream聲明文件讀寫變量。

ofstream是從內(nèi)存到硬盤,

ifstream是從硬盤到內(nèi)存,其實(shí)所謂的流緩沖就是內(nèi)存空間;在C++中,有一個(gè)stream這個(gè)類,所有的I/O都以這個(gè)“流”類為基礎(chǔ)的,包括我們要認(rèn)識(shí)的文件I/O。

一、打開文件在fstream類中,有一個(gè)成員函數(shù)open(),就是用來打開文件的,其原型是:

voidopen(const char* filename,int mode,int access);

filename:要打開的文件名

mode:要打開文件的方式

access:打開文件的屬性打開文件的方式在類ios(是所有流式I/O類的基類)中定義,常用的值如下:

ios::app:以追加的方式打開文件

ios::ate:文件打開后定位到文件尾,ios:app就包含有此屬性

ios::binary:以二進(jìn)制方式打開文件,缺省的方式是文本方式。

ios::in:文件以輸入方式打開(文件數(shù)據(jù)輸入到內(nèi)存)

ios::out:文件以輸出方式打開(內(nèi)存數(shù)據(jù)輸出到文件)

ios::nocreate:不建立文件,所以文件不存在時(shí)打開失敗

ios::noreplace:不覆蓋文件,所以打開文件時(shí)如果文件存在失敗

ios::trunc:如果文件存在,把文件長(zhǎng)度設(shè)為0,可以用“或”把以上屬性連接起來,如ios::out|ios::binary

二、關(guān)閉文件打開的文件使用完成后一定要關(guān)閉,fstream提供了成員函數(shù)close()來完成此操作,如:file1.close();把file1相連的文件關(guān)閉。

下面是一個(gè)簡(jiǎn)單的示例程序

這個(gè)程序我們先把前100個(gè)偶數(shù)寫入到了1.txt文件中,然后再讀入求和。如果想了解更多C++的語法和實(shí)現(xiàn),可以參考http://www.cplusplus.com/或者參考C++prime

?文案:榮思齊

排版:許宗清

總結(jié)

以上是生活随笔為你收集整理的c++清空输入缓冲区_干货 | C++的输入输出方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。