C 的幾種從鍵盤輸入方式

2021-07-30 12:07:54 字數 1416 閱讀 7644

我們都知道,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 傳遞給方法。若要表示多個字元,請...