C++學習隨筆1-cin、cin.get()、cin.getline()、getline()、gets()等函數的用法

来源:http://www.cnblogs.com/chen-diary/archive/2016/11/23/6093322.html
-Advertisement-
Play Games

1、cin>> 用法1:最基本,也是最常用的用法,輸入一個數字: 輸入:2[回車]3[回車] 輸出:5 用法2:接受一個字元串,遇“空格”、“TAB”、“回車”都結束 輸入:jkljkljkl 輸出:jkljkljkl 輸入:jkljkl jkljkl //遇空格結束 輸出:jkljkl 2、cin ...


1、cin>>          

用法1:最基本,也是最常用的用法,輸入一個數字:

#include <iostream> 
using namespace std; 
main () 
{ 
int a,b; 
cin>>a>>b; 
cout<<a+b<<endl; 
}

輸入:2[回車]3[回車] 
輸出:5

用法2:接受一個字元串,遇“空格”、“TAB”、“回車”都結束

#include <iostream> 
using namespace std; 
main () 
{ 
char a[20]; 
cin>>a; 
cout<<a<<endl; 
}

輸入:jkljkljkl 
輸出:jkljkljkl

輸入:jkljkl jkljkl       //遇空格結束 
輸出:jkljkl

2、cin.get()

用法1: cin.get(字元變數名)可以用來接收字元

 

#include <iostream> 
using namespace std; 
main () 
{ 
char ch; 
ch=cin.get();               //或者cin.get(ch); 
cout<<ch<<endl; 
}

輸入:jljkljkl 
輸出:j

用法2:cin.get(字元數組名,接收字元數目)用來接收一行字元串,可以接收空格

#include <iostream> 
using namespace std; 
main () 
{ 
char a[20]; 
cin.get(a,20); 
cout<<a<<endl; 
}

輸入:jkl jkl jkl 
輸出:jkl jkl jkl

輸入:abcdeabcdeabcdeabcdeabcde (輸入25個字元) 
輸出:abcdeabcdeabcdeabcd           (接收19個字元+1個'\0')

3、cin.getline()   // 接收一個字元串,可以接收空格並輸出

註意:cin.getline()的參數是char *而getline()的參數是string

#include <iostream> 
using namespace std; 
main () 
{ 
char m[20]; 
cin.getline(m,5); 
cout<<m<<endl; 
}

輸入:jkljkljkl 
輸出:jklj

接受5個字元到m中,其中最後一個為'\0',所以只看到4個字元輸出;

如果把5改成20: 
輸入:jkljkljkl 
輸出:jkljkljkl

輸入:jklf fjlsjf fjsdklf 
輸出:jklf fjlsjf fjsdklf

//延伸: 
//cin.getline()實際上有三個參數,cin.getline(字元串存儲區域m,接收個數5,結束字元) 
//當第三個參數省略時,系統預設為'\0' 
//如果將例子中cin.getline()改為cin.getline(m,5,'a');當輸入jlkjkljkl時輸出jklj,輸入jkaljkljkl時,輸出jk

4、getline()     // 接收一個字元串,可以接收空格並輸出,需包含“#include<string>”

#include<iostream> 
#include<string> 
using namespace std; 
main () 
{ 
string str; 
getline(cin,str); 
cout<<str<<endl; 
}

輸入:jkljkljkl 
輸出:jkljkljkl

輸入:jkl jfksldfj jklsjfl 
輸出:jkl jfksldfj jklsjfl

和cin.getline()類似,但是cin.getline()屬於istream流,而getline()屬於string流,是不一樣的兩個函數

5、gets()        // 接收一個字元串,可以接收空格並輸出,需包含“#include<string>”

#include<iostream> 
#include<string> 
using namespace std; 
main () 
{ 
char m[20]; 
gets(m);                       //不能寫成m=gets(); 
cout<<m<<endl; 
}

輸入:jkljkljkl 
輸出:jkljkljkl

輸入:jkl jkl jkl 
輸出:jkl jkl jkl

6、getchar()   //接收一個字元,需包含“#include<string>”

#include<iostream> 
#include<string> 
using namespace std; 
main () 
{ 
char ch; 
ch=getchar(); //不能寫成getchar(ch); 
cout<<ch<<endl; 
}

輸入:jkljkljkl 
輸出:j

//getchar()是C語言的函數,C++也可以相容,但是儘量不用或少用;

 

許多輸入/輸出語句都能返回操作狀態(true或false),例如:

if(cin>>a) cout<<a;               //若讀入失敗,則跳過cout<<a;
if(getline(in, str)) cout<<str;   //若讀入失敗,則跳過cout<<str;
if(a=cin.get() < 0) cout<<a;     //若讀入字元失敗,則跳過cout<<a;
if(cin) cin>>a;                   //若文字流狀態正常,則輸入

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 效果圖: style: xaml.CS: Loaded: emoticons.xml: <?xml version="1.0"?><Emoticons> <Emoticon id="0" tip="微笑">0.gif</Emoticon> <Emoticon id="1" tip="撇嘴">1.gi ...
  • 談及到C#的基本特性,“委托”是不得不去瞭解和深入分析的一個特性。對於大多數剛入門的程式員談到“委托”時,都會想到“將方法作為方法的參數進行傳遞”,很多時候都只是知道簡單的定義,主要是因為“委托”在理解上有較其他特性比較難的地方。在本次說明中,不會將委托的簡單聲明和調用作為重點。 “委托”不需要直接 ...
  • 面向對象的概念 :指以對象的方式來思考問題,在抽象對象的時候,值關心我們關註的點,忽略我們不關註的點 在面向對象中有兩個非常重要的元素:類(Class)和對象(object) 類:類是一個抽象的概念,是一個廣泛的值 對象:具體的個體 類裡面的元素(person):屬性(attribute):描述一類 ...
  • function get_mobile_area($mobile){ header('Content-Type:text/html;charset=gbk'); $url = 'http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution. ...
  • WeekCalendarUtils工具類代碼,傳入起始日期即可返回對應日期的周歷日曆,年月部分添加周數統計 一個table頁面展示部分 1 <style type="text/css"> 2 td { 3 border: 1px solid black; 4 background-color: #e ...
  • 一,object 類的wait(),notify()和notifyAll() Java 線程類也是一個object 類,它的實例都繼承自java.lang.Thread 或其子類。wait(),notify()和notifyAll()是Object類中的方法,常用於線程之間調度。 線程無數據運行可調 ...
  • A HttpPost方式 MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null, Charset.forName("UTF-8")); FileBody bin = new ...
  • <div style="float:left;margin-left:60px;"> <a href="lxx_public/vip/tpl/chprice.xls" style="text-decoration:none;"> <input type='button' value="實例下載" s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...