【C++】輸入輸出流 ⑤ ( cin 輸入流對象 | cin.ignore() 函數 | cin.peek() 函數 | cin.putback() 函數 )

文章目錄

  • 一、cin.ignore() 函數
    • 1、cin.ignore() 函數簡介
    • 2、cin.ignore() 函數原型
    • 3、代碼示例 - cin.ignore() 函數
  • 二、cin.peek() 函數
    • 1、cin.peek() 函數簡介
    • 2、代碼示例 - cin.peek()
  • 三、cin.putback() 函數
    • 1、cin.putback() 函數簡介
    • 2、代碼示例 - cin.putback()






一、cin.ignore() 函數




1、cin.ignore() 函數簡介


C++ 中 標準輸入流 的 cin.ignore() 函數 用于從 輸入流中 忽略 一個或多個字符 ;

cin.ignore() 函數 使用場景 : 在 處理輸入流時 忽略掉不需要的字符或者數值 , 如 : 在讀取特定字符之前的所有字符 , 或者 在讀取整數值時忽略掉逗號或空格等分隔符 ;


2、cin.ignore() 函數原型


cin.ignore() 函數原型 :

istream& ignore(int count = 1, int delim = EOF);basic_istream& __CLR_OR_THIS_CALL ignore(streamsize _Count = 1,int_type _Metadelim = _Traits::eof()) 
{ // ignore up to _Count characters, discarding delimiter
  • 參數解析 :

    • count 參數 : 表示要忽略的字符數量 , 默認值為1 ;
    • delim:表示停止忽略的條件,默認值為 EOF , End Of File , 表示文件結束 ; 也就是說,默認情況下 , cin.ignore() 會一直忽略字符 , 直到遇到文件結束符為止 ;
  • 返回值解析 : 該函數返回一個引用到調用它的流對象,所以你可以把 cin.ignore() 鏈接到其他輸入流操作中。


使用 Ctrl + Z 組合按鍵 , 可以向命令行中輸入 EOF 字符 ;


3、代碼示例 - cin.ignore() 函數


在下面的示例中 , 在命令行中 , 使用鍵盤輸入 “hello world” ;

cin >> buf; 可以將空格之前的數據輸出到 buf 數組中 , 讀取 “hello” 到數據緩沖區中 ;

cin.ignore(3); 忽略掉 輸入緩沖區中 后面 3 個字符 , 空格以及 “wo” 字符被忽略 ;

cin.getline(buf2, 32); 將剩余的字符讀取到 buf2 數組中 , “rld” 字符被讀取到 buf2 緩沖區中 ;


代碼示例 :

#include "iostream"
using namespace std;int main() {char buf[32];char buf2[32];// 命令行中 , 使用鍵盤輸入 "hello world"// 將空格之前的數據輸出到 buf 數組中// 讀取 "hello" 到數據緩沖區中cin >> buf;// 忽略掉后面 3 個字符// 空格以及 "wo" 字符被忽略cin.ignore(3);// 將剩余的字符讀取到 buf2 數組中// "rld" 字符被讀取到 buf2 緩沖區中cin.getline(buf2, 32);// 輸出接收的數據cout << "buf=" << buf << endl;cout << "buf2=" << buf2 << endl;// 控制臺暫停 , 按任意鍵繼續向后執行system("pause");return 0;
};

執行結果 :

hello world
buf=hello
buf2=rld
請按任意鍵繼續. . .

在這里插入圖片描述





二、cin.peek() 函數




1、cin.peek() 函數簡介


cin.peek() 函數 用于查看輸入流中的下一個字符 , 但并不從輸入流中提取這個字符 ;

cin.peek() 函數返回一個 char 類型的值 , 代表輸入流中的下一個字符 , 如果輸入流已經讀取到了結尾 , 或者沒有任何更多的數據 , 那么這個函數將返回 EOF , End Of File ;


2、代碼示例 - cin.peek()


下面的代碼中 , 輸入 “hello world” 字符 ,

讀取 緩沖區中的 “hello” 字符到 buf 數組中 , 然后再忽略 3 個字符 , 只剩下 “rld” 字符 ,

使用 peek 函數讀取第一個字符 ‘r’ , 小寫字母 r 對應碼表中的 114 ;

在這里插入圖片描述


代碼示例 :

#include "iostream"
using namespace std;int main() {char buf[32];char buf2[32];// 命令行中 , 使用鍵盤輸入 "hello world"// 將空格之前的數據輸出到 buf 數組中// 讀取 "hello" 到數據緩沖區中cin >> buf;// 忽略掉后面 3 個字符// 空格以及 "wo" 字符被忽略cin.ignore(3);// 讀取第一個字符, 查看后續是否有字符int c = cin.peek();cout << "c=" << c << endl;if (c != 0) {// 將剩余的字符讀取到 buf2 數組中// "rld" 字符被讀取到 buf2 緩沖區中cin.getline(buf2, 32);// 輸出接收的數據cout << "buf=" << buf << endl;cout << "buf2=" << buf2 << endl;}// 控制臺暫停 , 按任意鍵繼續向后執行system("pause");return 0;
};

執行結果 :

hello world
c=114
buf=hello
buf2=rld
請按任意鍵繼續. . .

在這里插入圖片描述





三、cin.putback() 函數




1、cin.putback() 函數簡介


cin.putback() 函數 用于將一個字符放回輸入流中 , 將最近從輸入流中提取的一個字符重新放回流中 , 以便再次讀取 ;


cin.putback() 函數原型如下 :

istream& putback(char c);
  • 參數解析 : 參數 c 是要放回輸入流中的字符
  • 返回值解析 : 該函數返回一個指向調用它的輸入流的引用 , 因此可以進行鏈式調用 ;

2、代碼示例 - cin.putback()


在下面的示例中 , 輸入內容 “hello” , 取出第一個字符 , 判斷是否是 h 字符 , 如果是則將取出的字符放回緩沖區 , 將緩沖區的內容輸出到 字符數組中 ;


代碼示例 :

#include "iostream"
using namespace std;int main() {char c;char buf[32];// 命令行中 , 使用鍵盤輸入 "hello"// 讀取第一字節字符cin >> c;// 將去除的字符放回去cin.putback(c);if (c == 'h') {cin >> buf;}cout << "c=" << c << " , buf : " << buf << endl;// 控制臺暫停 , 按任意鍵繼續向后執行system("pause");return 0;
};

執行結果 :

hello
c=h , buf : hello
請按任意鍵繼續. . .

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210401.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

if語句和switch語句來確定金額之下的優惠折扣

一、優惠規則 輸入相應的金額&#xff0c;可以獲得規則之下&#xff0c;金額相應的享受的折扣&#xff0c;需要先定義金額&#xff0c;然后就是使用if語句進行判斷&#xff0c;使用switch語句選擇判斷規則之下對應的優惠折扣。 二、相關代碼 public class DiscountPrice {p…

<DB2>《DB2使用期間一些注意事項》

1 建存儲過程時 Create 后不能使用 TAB 鍵 create procedure create 后只能用空格&#xff0c;而不可用 tab 健&#xff0c;否則編譯會通不過。 2 查看語句執行計劃 dynexpln -d testdb -f test.sql -o test.out -g -z ; sql 語句放在 test.sql 中&#xff0c;結果輸出到 te…

git 拉取項目指定目錄或者指定文件

因為要做數據庫自動更新&#xff0c;需要拉取Gitlab項目中/bm-server-biz/docs目錄下的表更新sql文件&#xff0c;其他的都不需要&#xff0c;這時候可以利用git的“sparse checkout”方法&#xff08;設置稀疏檢出&#xff09;來實現。 1、在項目目錄下git 初始化 [rootxcc-…

開源軟件:JumpServer、DataEase、MeterSphere

FIT2CLOUD 認識開源軟件之前&#xff0c;先了解一下開發團隊FIT2CLOUD。FIT2CLOUD&#xff08;飛致云&#xff09;是一家中國領先的開源軟件公司&#xff0c;成立于2014年。公司專注于提供工業操作系統技術平臺與解決方案&#xff0c;是中國工業互聯網行業的領軍企業&#xff…

矩陣處理—Zigzag矩陣打印

與其明天開始&#xff0c;不如現在行動&#xff01; 文章目錄 Zigzag矩陣打印1.1 題目描述1.2 解決思路1.3 代碼實現 &#x1f48e;總結 Zigzag矩陣打印 1.1 題目描述 有一個n行m列的矩陣&#xff0c;要求按照Z字形打印出數據&#xff0c;如圖&#xff1a; 1.2 解決思路 用一…

Weblogic T3協議反序列化漏洞

文章目錄 1. Weblogic T3協議反序列化漏洞1.1 漏洞描述1.2 基本原理1.3 漏洞復現1.4 修復建議 1. Weblogic T3協議反序列化漏洞 1.1 漏洞描述 說明內容漏洞編號CVE-2018-2628漏洞名稱Weblogic T3協議反序列化漏洞漏洞評級高危影響范圍Weblogic 10.3.6.0Weblogic 12.1.3.0Webl…

基于JavaWeb+SSM+Vue居住證申報系統小程序的設計和實現

基于JavaWebSSMVue居住證申報系統小程序的設計和實現 源碼獲取入口KaiTi 報告Lun文目錄前言主要技術系統設計功能截圖訂閱經典源碼專欄Java項目精品實戰案例《500套》 源碼獲取 源碼獲取入口 KaiTi 報告 1.1題目背景 隨著時代的發展&#xff0c;人口流動越來越頻繁&#xff0…

生活、工作常用API免費接口

身份證識別OCR&#xff1a;傳入身份證照片&#xff0c;識別照片文字信息并返回&#xff0c;包括姓名、身份證號碼、性別、民族、出生年月日、地址、簽發機關及有效期。二維碼識別OCR&#xff1a;對圖片中的二維碼、條形碼進行檢測和識別&#xff0c;返回存儲的文字內容。銀行卡…

pycharm安裝

1.先去官網下載pycharm 2.下載python3.8 3.修改pip鏡像 4.如果有環境變量沒加的加一下

Gazebo基本使用

參考文章 熟悉Gazebo界面 : ROS自學筆記八&#xff1a;Gazebo 搭建環境&#xff1a;Gazebo仿真環境搭建 搭建環境&#xff0b;加載機器人&#xff1a;gazebo仿真環境搭建配置小車運動仿真

全國農服進萬家系列活動——中國農業生產托管萬里行在河北玉田舉行

12月8日&#xff0c;“全國農服進萬家系列活動-中國農業生產托管萬里行”在河北省玉田縣圓滿舉行。來自全國各地農業農村領域的嘉賓齊聚一堂&#xff0c;交流農業社會化服務典型經驗&#xff0c;共話農業社會化服務高質量發展大事。 原農業部總農藝師、中國合作經濟學會會長孫中…

【戀上數據結構】前綴樹 Tire 學習筆記

Tire 需求分析 如何判斷一堆不重復的字符串是否以某個前綴開頭&#xff1f; 用 Set\Map 存儲字符串&#xff08;不重復&#xff09;遍歷所有字符串進行判斷缺點&#xff1a;時間復雜度 O(n) 有沒有更優的數據結構實現前綴搜索&#xff1f; Tire&#xff08;和 Tree 同音&a…

Rust測試字符串的移動,Move

代碼創建了一個結構體&#xff0c;結構體有test1 字符串&#xff0c;還有指向字符串的指針。一共創建了兩個。 然后我們使用swap 函數 交換兩個結構體內存的內容。 最后如上圖。相同的地址&#xff0c;變成了另外結構體的內容。注意看指針部分&#xff0c;還是指向原來的地址…

input、el-input輸入框輸入規則

一、input 只能輸入框只能輸入正整數&#xff0c;輸入同時禁止了以0開始的數字輸入&#xff0c;防止被轉化為其他進制的數值。 <!-- 不能輸入零時--> <input typetext οninput"valuevalue.replace(/^(0)|[^\d]/g,)"><!-- 能輸入零時--> <inp…

luceda ipkiss教程 43:畫漸變圓弧型波導

案例分享&#xff1a; from si_fab import all as pdk import ipkiss3.all as i3 from ipcore.properties.restrictions import RestrictTuple from ipkiss.geometry.shapes.modifiers import __ShapePathBase__ import numpy as np from math import atan2class ShapePathTa…

[java]學生管理系統

一、學生類 首先創建一個學生類&#xff0c;定義學號姓名年齡居住地 public class Student {private String id;private String name;private String age;private String address;//構造函數public Student(String id, String name, String age, String address) {this.id i…

54.grpc實現文件上傳和下載

文章目錄 一&#xff1a;簡介1. 什么是grpc2. 為什么我們要用grpc 二&#xff1a;grpc的hello world1、 定義hello.proto文件2、生成xxx_grpc.pb.go文件3、生成xxx.pb.go結構體文件4、編寫服務代碼service.go5、編寫客戶端代碼client.go 三、服務端流式傳輸&#xff1a;文件下載…

AIOps、微服務和云平臺

數字景觀正在從整體轉向微服務、基于云的服務。企業和公司需要適應不斷變化的技術格局并跟上變化。系統變得越來越復雜并且不容易管理。我將嘗試解釋一些較新的架構方法、趨勢&#xff0c;并提供對 AIOps 的見解以及它如何幫助解決這個問題。 微服務 微服務架構正在成為最受歡…

什么是web組態?一文讀懂web組態

隨著工業4.0的到來&#xff0c;物聯網、大數據、人工智能等技術的融合應用&#xff0c;使得工業領域正在經歷一場深刻的變革。在這個過程中&#xff0c;web組態技術以其獨特的優勢&#xff0c;正在逐漸受到越來越多企業的關注和認可。那么&#xff0c;什么是web組態&#xff1f…

android-android源碼目錄

android源碼目錄 Android.bp art bionic bootable bootstrap.bash build build.sh compatibility cts dalvik developers development device external frameworks hardware IMAGE javaenv.sh kernel libcore libnativehelper Makefile mkcombinedroot mkimage_ab.sh mkimage.…