C/C++的幾個輸入流

C:

1.scanf( )

存在於<stdio.h>(C++爲<cstdio>)中,根據stdin讀取數據並根據參數格式進行賦值,以第一個非空格字符(空格字符如:空格,制符表,換行符)爲起點。通常鍵盤輸入時,返回成功賦值的參數的個數如:0(失敗),1(成功賦值一個),2,...ios

開始&結束標誌:  常見的數值賦值、單個字符賦值時,以第一個非空格字符爲開始標誌,以空格字符爲結束標誌。可是以換行符鍵盤緩衝區結束標誌(整數、字符、字符串都會出現下圖狀況)。因此使用"%s"進行字符串賦值時,沒法賦值空格字符。數組

 

scanf()輸入 字符數組 

 

                  附,格式說明:app

常見的格式化單元符
i

整數函數

d/u 十進制整數(u是無符號數)
o 八進制整數
x 十六進制整數
f

浮點數(彷佛是全部進制的,如16進制浮點數前面加 '0x')spa

e e指數形式的浮點數
g g自動選擇合適的類型
c 字符
s 字符串
p 指針地址
常見的幾種 格式&類型
%hd、%hu short int、unsigned short int

%d、%u3d

int、unsigned int
%ld、%lu long int、unsigned long int
%lld、%llu long long int、unsigned long long int、
%f float
%lf double
%Lf long double
%c char
%s char *  /  char[ ]
   

2.getchar( )

存在於<stdio.h>中,返回讀取的字符的ASCII碼,返回類型爲int。(一個字符一個字符地讀取)指針

通常狀況下getchar( )會開啓輸入(如:鍵盤)緩衝區,而且該緩衝區以換行符爲結束。可是此時getchar( )只讀取了一個字符,致使換行符還存在於緩衝區內。對象

第一次輸入「A」+「回車」;//能夠明顯地看到b=「回車」;blog

第二次輸入「YYY」+「回車」ci

第三次輸入「EEE」+「回車」

綜上,無delim,不丟棄任何字符,一次讀一個字符,包括空格符、製表符、換行符。

如圖:(第16行while的條件用來去除緩衝區中的「換行符」)

getchar( )

3.gets(char * str)

存在於<stdio.h>中,原型爲char * gets ( char * str ),返回str。

以換行符爲結束標誌,將全部字符(包括空格)賦值給字符數組,並丟棄delim

目前來看只能進行 字符數組 的賦值,如圖

C++:

        4.std::getline(istream& is, string& str, char delim)

           原型:

  • istream& getline (istream& is, string& str, char delim);
  • istream& getline (istream&& is, string& str, char delim);
  • istream& getline (istream& is, string& str);
  • istream& getline (istream&& is, string& str);

存在於<string>中,能夠認爲是gets( )的string版,返回str,並丟棄delim。

輸入流必須指定,默認狀況下終結符爲「換行符」(「\n」)。

5.std::istream::getline(char* s, streamsize n, char delim)

存在於<istream> <iostream>中,能夠認爲是gets( ),返回istream該對象的指針,並丟棄delim。

原型:

  • istream& getline (char* s, streamsize n );
  • istream& getline (char* s, streamsize n, char delim );

6.std::istream::get()

存在於<istream> <iostream>中,能夠認爲是gets( ),由於重載函數比較多。返回istream該對象的指針,不丟棄delim。

原型

    • int get();
    • istream& get (char& c);
    • istream& get (char* s, streamsize n);
    • istream& get (char* s, streamsize n, char delim);
    • istream& get (streambuf& sb);
    • istream& get (streambuf& sb, char delim);
相關文章
相關標籤/搜索