我們都知道,c++可以從鍵盤來讀取輸入,讀取輸入的方式也有好多種,下面
我們來介紹常見的幾種方式
和他們的不同之處
1、cin
使用cin輸入時,程式將輸入視為一系列位元組。每個位元組都被解釋為字元編碼。不管資料型別是什麼,輸入一開始都是字元資料,然後
cin物件負責將資料轉換成其他型別
例如 string name;
std::cin>>name;
std::cout《當你輸入michael jackon時,通執行程式你會發現
name
只儲存了
michael
,這是為什麼呢?
原來是 cin使用空白(空格,製表符和換行符)來確定字串的結束位置
在讀取字元陣列時,cin將只會讀取第乙個單詞,
cin將該字串放到陣列中,並自動新增空字元
michael jackon 之間的空格被當作結束符了,而
jackon
被繼續留在輸入佇列中,直到下一次讀取輸入
如何來解決這種問題呢,請繼續往下看
2、getline()
getline()函式用於讀取整行,通過回車鍵來確定輸入的結尾
假如你還是要讀取michael jackon
string name;
getline(cin,name);
std::cout《或者你可以用char陣列
char name[50];
std::cin.getline(name,50);
std::cout《這是你就會發現讀取的是michael jackon了
getline雖然通過讀取換行符來讀取結尾,但是它並不儲存換行符,儲存字串是,他會用空字元來代替換行符
getline讀取完一行時,會從下一行開始讀,也就是說我們可以跳過某一行
假設我們讀取文字檔案時,不讀取某一行,我們可以這樣做
string str;
getline(cin,str);
這樣便跳過這一行了
3、get()
istream中有乙個名為
get()的變體,他的工作方式和
getline
()類似。他們接受引數相同,解釋引數的方式也相同,並且都讀取到行尾。的韓式
get()
讀取到行尾時不丟棄換行符,而是將它留在輸入佇列中
cin.get(name,50);
cin.get(dessert,50);
假設讀取了乙個字串,再讀取時,讀取到的便是換行符了,get()便認為已經到達行尾了,不在讀取
怎麼解決呢?
我們可以在兩次讀取之間加乙個cin.get();用來讀取下乙個字元,即使是換行符。
cin.get(name,50);
cin.get();
cin.get(dessert,50)
C 從鍵盤輸入的方法
c 最基本的常用的輸入方式 包含標頭檔案 include 注意 不能接受空格和回車 int main 1 scanf 函式 包含標頭檔案 include scanf函式一般格式為scanf s st 但scanf預設回車和空格是輸入不同組之間的間隔和結束符號,所以輸入帶空格,tab或者回車的字串都是...
rust 從鍵盤輸入資料
直接上 吧!use std io fn main guess 很有意思,rust借鑑了很多函式式程式設計的思想,前幾年學過haskell,現在感到有些面熟。下面這個命令,沒有用c 慣用的建構函式,而是使用了乙個函式,返回乙個類的例項。let mut guess string new rust的編譯機...
C 模擬鍵盤輸入
主要用到的類sendkeys.並通過其方法send 向當前活動的應用程式傳送單擊動作行為。例如 sendkeys.send 123 就會模擬鍵盤敲擊1,2,3,每個鍵都由乙個或多個字元表示。若要指定單個鍵盤字元,請使用該字元本身。例如,若要表示字母 a,請將字串 a 傳遞給方法。若要表示多個字元,請...