C++中各種輸入函數的用法總結



1.scanf()函數
原型:int scanf(const char *restrict format,......);
入口參數:第一個參數是格式字符串,它指定了輸入的格式,......格式化后的字符串存取地址。
返回值:函數返回值為int類型,如果讀取到了“文件結束”則返回EOF,EOF為Ctrl+z或者Ctrl+d。其他情況則返回int型數字,例如:int res = scanf("%d %d",&a,&b);如果a,b都讀取成功,則返回2;如果a,b只讀取成功了一個,則返回1;如果a,b都沒有讀取成功,則返回0.
說明:scanf()函數是C語言庫中的函數,但由於C++的向下兼容性,所以在C++中也可以使用此函數。次函數是從標准輸入流stdio(一般是鍵盤輸入)中讀取數據,並將其按照指定格式輸入到制定地址。
頭文件:#include <stdio.h>
用例:

#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
    int a,b;
    scanf("%d %d",&a,&b); //注意此處輸入的格式,兩個輸入數字之間要以空格分隔開來。
    printf("%d %d",a,b);
}

2.cin()類(此類命名空間都在std中,無需添加頭文件)。
2.1.cin>>函數
說明:當我們從鍵盤輸入時,有一個緩沖區,當輸入結束時會將所輸入的數據存到緩沖區。而cin>>的作用就是從緩沖區讀數據,所以當緩沖區數據本來就有殘留時,會出現讀取出錯的問題。值得一提的是:cin函數遇到空格、TAB、換行時讀取結束。
用例:
  1.輸入一個字符串。

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

  輸入:aaabbbccc
  輸出:aaabbbccc

  輸入:aaa bbb ccc
  輸出:aaa

  2.輸入一個數字。

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

  }

 

  輸入:1回車2回車
  輸出:3
2.2.cin.get()函數
原型:該函數有三種形式,分別是char ch = cin.get(), cin.get(char ch), cin.get(array,length)
    1.cin.get() 和 cin.get(char ch)的用法
    這兩個函數功能基本一樣,都是讀取緩沖區的一個字符,遇到換行符結束,但是這兩個函數都不會丟棄緩沖區里邊的空格      和換行符。char ch = cin.get(), cin.get(char ch)這兩句可得到相同的結果。
    用例:

   #include <iostream>
  using namespace std;
      void main()
     {
        char ch1,ch2;
        cin.get(ch1);
        ch2 = cin.get();

        cout<<ch1<<endl;
        cout<<ch2<<endl;
    }   

 


    輸入:a換行
    輸出:a
   
    (此處有一行空行,因為不會丟棄緩沖區里邊的空行)

---------------------------------------------------------------------
    2.cin.get(array,length)
    這個函數是從緩沖區讀取字符串,其中array是字符串接受地址,length-1是字符串長度,因為最后一個字符必須存  儲'\0'結束符,所以此函數只能接受length-1個字符。
    用例:

    #include <iostream>
    using namespace std;
    void main()
    {
        char ch[5];
        cin.get(ch,5);
        cou<<ch<<endl;
    }

    輸入:abcdefghi
    輸出:abcd
2.3.cin.getline(string str,int length)函數
說明:接收一個長度為length-1的字符串,包括空格,遇到換行結束。

     #include<iostream>
  using namespace std;
  int main()
  {
    char ch[10];
    cin.getline(ch,5);
    cout<<ch<<endl;
    return 0;
  }

  輸入:aaaaaaaa
  輸出:aaaa
3.getline()函數
原型:ssize_t getline(char **lineptr,size_t *n,FILE *stream);(在C語言的GCC擴展定義中)
      getline(cin,string s);(在C++中)

說明:getline不是C語言的庫函數,而是GCC的擴展定義或者C++庫函數,在C語言中和C++中的使用是不同的.
用例1:(在C++中,應包含頭文件<string>,讀取字符串包含空格,遇到換行結束,不包括換行)

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

    return 0;
}

輸入:abcdefgh換行
輸出:abcdefgh
用例2:(在C語言中,GCC擴展定義)
待補充。。。。。。
4.gets()函數
原型:char *gets(char *buffer);
入口參數:從緩沖區讀取字符串后的寫入地址
返回值:讀取成功后返回與入口參數buffer相同的地址。讀取錯誤返回NULL。
頭文件:<string>
說明:接收輸入的字符串,沒有上限,但是要保證buffer足夠大,以換行結束,並將換行符轉化為'\0'。
用例:

  #include<iostream>
  #include<string>
  using namespace std;
  int main()
  {
    char ch[10];
    gets(ch);
    cout<<ch<<endl;
    return 0;
  }

  輸入:abcdefg回車
  輸出:abcdefg

5.getchar()函數
原型:int getchar(void);
返回值:讀取成功返回用戶輸入的ASCII碼,讀取失敗返回EOF.
頭文件:<string>或者<stdio.h>
說明:接收一個字符的輸入,包含空格,遇到換行符結束。

  #include<iostream>
  #include<string>
  using namespace std;
  int main()
  {
    char ch;
    ch = getchar();
    cout<<ch<<endl;
    return 0;
  }

  輸入:abc回車
  輸出:a


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM