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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

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

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

對C++有一定學習的同學可以很輕松的寫出一下代碼

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

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

首先是類庫iostream.iostream的意思是輸入輸出流,直接點說就是in(輸入)out(輸出)stream(流),取in、out的首字母與stream合成。iostream庫的基礎是兩種命名為istream和ostream的類型,分別表示輸入流和輸出流。流是指要從某種IO設備上讀出或寫入的字符序列。術語“流”試圖說明字符是隨著時間順序生成或消耗的。標準庫定義了4個IO對象。處理輸入時使用命名為cin的istream類型對象。這個對象也稱為標準輸入。處理輸出時使用命名為cout的ostream類型對象,這個對象也稱為標準輸出。標準庫還定義了另外兩個ostream對象,分別命名為cerr和clog。cerr對象又叫作標準錯誤,通常用來輸出警告和錯誤信息給程序的使用者。而clog對象用于產生程序執行的一般信息。

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

輸入和輸出并不是C++語言中的正式組成成分。C和C++本身都沒有為輸入和輸出提供專門的語句結構。輸入輸出不是由C++本身定義的,而是在編譯系統提供的I/O庫中定義的。C++的輸出和輸入是用“流”(stream)的方式實現的。圖3.2和圖3.3表示C++通過流進行輸入輸出的過程。

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

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

cout語句的一般格式為:

cout<

cin語句的一般格式為:

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

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

在用cins輸入cout輸出時,我們不必通知計算機按何種類型輸出,系統會自動判別輸出數據的類型,使輸出的數據按相應的類型輸出。例如

我們可以同時對整型變量a浮點型b,字符型c,字符串型d進行輸入輸出。

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

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

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

例一:輸出雙精度數

程序結果

例二:整數輸出

程序結果

三:輸入的技巧淺談

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

效果如圖

其函數原型如下

下面我們簡單的分析一下這個函數

01

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

02

輸入任意行字符,其中有空格。可以理解為輸入一篇文章。將getline函數放入while循環中不斷讀入。由于getline函數返回一個流對象,所以可以作為bool值進行判斷,所以我們就可以不斷調用函數,直到沒有字符讀入為止。

假設文章不超過maxn行

03

讀入若干行整數,每行整數數量不確定,求每行的和及輸入的整數的個數

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

效果圖如下

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

帶的數據類型,開始定義了類來實現模塊化編程,但是如果又追求實現簡潔優雅的用cincout 來輸入輸出對象,這時候我們就可以實現對插入運算符<>的重載來達到我們的目的.

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

效果如圖

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

函數原型如下

參數說明:

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

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

stream:一個文件,通常使用標準流文件。

返回值:成功,則返回一個path所指定文件的指針;失敗,返回NULL。功能:實現重定向,把預定義的標準流文件定向到由path指定的文件中。標準流文件:具體是指stdin、stdout和stderr。其中stdin是標準輸入流,默認為鍵盤;stdout是標準輸出流,默認為屏幕;stderr是標準錯誤流,一般把屏幕設為默認。使用fstream聲明文件讀寫變量。

ofstream是從內存到硬盤,

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

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

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

filename:要打開的文件名

mode:要打開文件的方式

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

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

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

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

ios::in:文件以輸入方式打開(文件數據輸入到內存)

ios::out:文件以輸出方式打開(內存數據輸出到文件)

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

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

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

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

下面是一個簡單的示例程序

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

?文案:榮思齊

排版:許宗清

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。