BellGrade的部落格 C++各種輸入流 一文
學C++的時候,這幾個輸入函式弄的有點迷糊;這裡做個小結,為了自己複習,也希望對後來者能有所幫助,如果有差錯的地方還請各位多多指教(本文所有程式均通過VC 6.0執行)
1cin
1cin.get()
2cin.getline()
3getline()
4gets()
5getchar()
附:cin.ignore();cin.get()//跳過一個字元,例如不想要的回車,空格等字元
1cin>>
用法1:最基本,也是最常用的用法,輸入一個數字:
#include <iostream>
using namespace std;
main ()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
}
輸入:2[回車]3[回車]
輸出:5
注意:>> 是會過濾掉不可見字元(如 空格 回車,TAB 等)
cin>>noskipws>>input[j];//不想略過空白字元,那就使用 noskipws 流控制
用法2:接受一個字串,遇空格TAB回車都結束
#include <iostream>
using namespace std;
main ()
{
char a[20];
cin>>a;
cout<<a<<endl;
}
輸入:jkljkljkl
輸出:jkljkljkl
輸入:jkljkl jkljkl //遇空格結束
輸出:jkljkl
2cin.get()
用法1: cin.get(字元變數名)可以用來接收字元
#include <iostream>
using namespace std;
main ()
{
char ch;
ch=cin.get(); //或者cin.get(ch);
cout<<ch<<endl;
}
用法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')
這個我還不知道怎麼用,知道的前輩請賜教;
3cin.getline() // 接受一個字串,可以接收空格並輸出
#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}
輸入:jkljkljkl
輸出:jklj
接受5個字元到m中,其中最後一個為'\0',所以只看到4個字元輸出;
//延伸:
//cin.getline()實際上有三個引數,cin.getline(接受字串的看哦那間m,接受個數5,結束字元)
//當第三個引數省略時,系統預設為'\0'
//如果將例子中cin.getline()改為cin.getline(m,5,'a');當輸入jlkjkljkl時輸出jklj,輸入jkaljkljkl時,輸出jk
當用在多維陣列中的時候,也可以用cin.getline(m[i],20)之類的用法:
#include<iostream>
#include<string>
using namespace std;
main ()
{
char m[3][20];
for(int i=0;i<3;i++)
{
cout<<"\n請輸入第"<<i+1<<"個字串:"<<endl;
cin.getline(m[i],20);
}
cout<<endl;
for(int j=0;j<3;j++)
cout<<"輸出m["<<j<<"]的值:"<<m[j]<<endl;
}
請輸入第1個字串:
kskr1
請輸入第2個字串:
kskr2
請輸入第3個字串:
kskr3
輸出m[0]的值:kskr1
輸出m[1]的值:kskr2
輸出m[2]的值:kskr3
#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流,是不一樣的兩個函式
注意:在使用getline時有一個奇怪的現象,在vc6下, 要打兩次回車才可以結束
5gets() // 接受一個字串,可以接收空格並輸出,需包含#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
類似cin.getline()裡面的一個例子,gets()同樣可以用在多維數組裡面:
#include<iostream>
#include<string>
using namespace std;
main ()
{
char m[3][20];
for(int i=0;i<3;i++)
{
cout<<"\n請輸入第"<<i+1<<"個字串:"<<endl;
gets(m[i]);
}
cout<<endl;
for(int j=0;j<3;j++)
cout<<"輸出m["<<j<<"]的值:"<<m[j]<<endl;
}
請輸入第1個字串:
kskr1
請輸入第2個字串:
kskr2
請輸入第3個字串:
kskr3
輸出m[0]的值:kskr1
輸出m[1]的值:kskr2
輸出m[2]的值:kskr3
自我感覺gets()和cin.getline()的用法很類似,只不過cin.getline()多一個引數罷了;
這裡順帶說明一下,對於本文中的這個kskr1,kskr2,kskr3的例子,對於cin>>也可以適用,原因是這裡輸入的沒有空格,如果輸入了空格,比如ks kr jkl[回車]那麼cin就會已經接收到3個字串,ks,kr,jkl;再如kskr 1[回車]kskr 2[回車],那麼則接收kskr,1,kskr;這不是我們所要的結果!而cin.getline()和gets()因為可以接收空格,所以不會產生這個錯誤;
#include<iostream>
#include<string>
using namespace std;
main ()
{
char ch;
ch=getchar(); //不能寫成getchar(ch);
cout<<ch<<endl;
}
//getchar()是C語言的函式,C++也可以相容,但是儘量不用或少用;
相關推薦
BellGrade的部落格 C++各種輸入流 一文
學C++的時候,這幾個輸入函式弄的有點迷糊;這裡做個小結,為了自己複習,也希望對後來者能有所幫助,如果有差錯的地方還請各位多多指教(本文所有程式均通過VC 6.0執行) 1cin 1cin.get() 2cin.getline() 3getline() 4gets() 5getchar() 附:cin
C++while與輸入流一起用的時候
今天寫一段程式碼,發現了一個以前沒有遇到過的問題。 std::string str1,str2; std::cout << "input str1" << std::endl; while(std::cin>>str1) {
我們為什麼堅持寫部落格,學習的另一種方式
種種原因: 我們很多人都有過寫點東西的衝動,只是又因為種種原因沒有發表。 寫著寫著,擠不出字來了。 總感覺自己的內心想法表達不出來。 感覺寫了沒什麼用,自己都明白了幹嘛還要寫。 怕寫出來被人笑話
【Altera部落格大賽】時序優化一例(三)
在使用兩種方法(《時序優化一例(一)》,《時序優化一例(二)》)對設計進行時序優化後,設計的建立時間餘量從-1.070優化到-0.240,但是時序還未達到收斂,繼而嘗試了許多其它方法: (一)區域性優化 &n
JavaSE_8系列部落格——專家之路(一)---Java反射的總結
先來四個基本問題 一什麼是反射what 生活中的反射 程式設計語言中的反射 Java中的反射 其他語言中的反射 NET平臺中的反射
python簡單爬蟲:爬取並統計自己部落格頁面的資訊(一)
1. 什麼是爬蟲 也叫網路爬蟲,簡單來說,爬蟲就是從一個根網站出發,根據某種規則獲得更多的相關網站的url,自動下載這些網頁並自動解析這些網頁的內容,從中獲取需要的資料。例如爬取某種圖片、某類文字資訊等。爬蟲還可以用於編纂搜尋引擎的網路索引。 爬蟲所涉及的知
C++字串輸入流的問題
自己的感想:C++中有很多輸入流函式,但是每個函式的結束符不一樣 如: std::cin()是以空格、回車、tab建、回車結束。 scanf中的%s也是隻讀一個字串和cin車不多 gets()是以回車鍵結束的;可以用來讀取多個不連續的字串;
【C++】輸入流物件cin讀取輸入流的三種方式
輸入流物件cin讀取輸入流的三種方式 cin 輸入流物件有三種讀取控制檯輸入的方法。 分別為: 使用“>>”運算子,這種方法只能讀取單個單詞,cin使用空白(空格、製表符和換行符)來確定字串的結束位置使用getline()成員函式,getline()方法面
c++ 從輸入流中獲取輸入
點選開啟連結 輸入流物件cin讀取輸入流的三種方式 c++ 從輸入流中獲取特定型別的資料的方式: 1、cin(以空白【空格,製表符和換行符】結束讀取) 2、cin的成員函式 getline(),用法:cin.getline()。功能:獲取一行輸入,包括空白【
第一篇部落格—c語言單鏈表的基本操作
c語言單鏈表的基本操作 對於c語言的初學者來說,連結串列是一塊大難點,其中用到結構體,指標的知識,這裡講的是最簡單的單鏈表,連結串列是一種動態儲存方式,和陣列相比,連結串列的優點是方便插入,沒有上限的儲存(相對來說),缺點也很明顯,排序很煩,查詢也很麻煩。
部落格新站規劃(一)——(整體規劃)
導讀 部落格是以網路作為載體,簡易迅速便捷地釋出自己的心得,及時有效輕鬆地與他人進行交流,再集豐富
基於 abp vNext 和 .NET Core 開發部落格專案 - 部落格介面實戰篇(一)
## 系列文章 1. **[基於 abp vNext 和 .NET Core 開發部落格專案 - 使用 abp cli 搭建專案](https://www.cnblogs.com/meowv/p/12896177.html)** 2. **[基於 abp vNext 和 .NET Core 開發部落格專案
C# 各種導入 Excel 文件的數據的方法總結
占用 guid 保存 null amp nbsp 字符串 count str 在導入之前都需要將上傳的文件保存到服務器,所以避免重復的寫這些代碼,先貼出上傳文件並保存到服務器指定路徑的代碼。 protected void btnImport_Click(object s
字節輸入流寫文本文件【OutputStream、FileOutputStream】
byte[] 方法名 cell end borde 方法 oid 所有 寫入文件 字節輸入流寫文本文件 1.OutputStream基類 作用:把內存中的數據輸出到文件中。 ※OutputStream類的常用方法 方法名稱 說明
C#各種導入Excel文件的數據的方法總結
context tab 過程 all dap 添加列 map lease 內存 在導入前都需要將上傳的文件保存到服務器,所以避免重復的寫這些代碼,先貼出上傳文件並保存到服務器指定路徑的代碼 protected void btnImport_Click(object sen
Java中利用IO流中的輸入流讀取文件實現登錄功能
use 判斷 body 當前 ole pwd files pre users 1 package object.io; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundEx
此部落格已停用,博文會逐漸轉移到新地址,http://blog.csdn.net/liupeifeng3514
RabbitMQ的安裝過程非常簡單:由於RabbitMQ是基於Erlang語言開發並執行的,所以安裝RabbitMQ的第一步是安裝Erlang執行環境。您可以在https://www.erlang-solutions.com/resources 下載最新Erla
輸入一行字元分別統計出其中英文字母、空格、數字和其他字元的個數。(用c++語言編寫程式)【寫的第1篇部落格,很高興
#include<stdio.h> int main() { char ch; //定義ch為字元型變數 int a=0,b=0,c=0,d=0; //定義a,b,c,d為整型變數並賦初值 while(scanf("%c",&ch),ch!=’\n’) //輸入字元直到c
懶妹子,第一次開始想寫部落格,有那麼一丟丟小激動呢 ememem--進入正題,分享關於個別iphoneX輸入框失去焦點的bug
近來iphone新機鋪面而來,作為一個自己沒有iphone最新機的小前端,也只有羨慕的份啦,不過呢程式碼還是要碼的,新機的bug還是要改滴,iphone x系列包括xs xr,當input獲取焦點後鍵盤彈起,頁面隨著鍵盤向上滑動,一切正常,然鵝,當輸入完,點選手機鍵盤自帶的完成按鈕,或者是你要進入下一步操作,
【FIF_Bro的部落格】C++ 的最大優點是,它是一門強大,兼顧了底層效率的,高階語言。這使得 C++ 幾乎沒有任何侷限性,無所不能。只要你是一個追求極致達到偏執的人,你幾乎總可以追尋到它的影子和存在。這門語言超高的開發成本,使得只有偏執的人,才會對它痴狂
C++ 的最大優點是,它是一門強大,兼顧了底層效率的,高階語言。這使得 C++ 幾乎沒有任何侷限性,無所不能。只要你是一個追求極致達到偏執的人,你幾乎總可以追尋到它的影子和存在。這門語言超高的開發成本...