c++中的讀取輸入


1)、cin

2) 、cin.get()

3)、cin.getline()

4)、getline()

5)、gets()

 

 

1.cin>>

用法 1: 輸入一個數字

用法 2:接收一個字符串,遇“空格”、“TAB”、“回車”都結束    

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

輸入:qwer  tuoqew

輸出:qwer   //遇空格結束

 

2.cin>>get()

用法1:cin.get(字符變量名),可以用來接收一個字符

   #include <iostream>
  using namespace std;
  main ()
  {
  char ch;
       cin.get(ch);
  cout<<ch<<endl;
  }

輸入:abcde

輸出:a

用法2:cin.get(字符數組名,接收字符數目),可以用來接收一個字符數組(字符串),可以接收空格

 #include <iostream>
  using namespace std;
  main ()
  {
  char a[20];
  cin.get(a,20);
  cout<<a<<endl;
  }

輸入:abc abc abc

輸出:abc abc abc

輸入:zxcvbnmasdfghjklqwerty

輸出:zxcvbnmasdfghjklqwe(接收19個字符+一個'\0')

用法3:cin.get(無參數)沒有參數主要是用於舍棄輸入流中的不需要的字符,或者舍棄回車,彌補cin.get(字符數組名,接收字符數目)的不足.

3.cin.getline()

  #include <iostream>
  using namespace std;
  main ()
  {
  char m[20];
  cin.getline(m,5);
  cout<<m<<endl;
  }

 輸入:jkljkljkl
  輸出:jklj
接受5個字符到m中,其中最后一個為’\0’,所以只看到4個字符輸出;
  如果把5改成20:
  輸入:jkljkljkl
  輸出:jkljkljkl
  輸入:jklf fjlsjf fjsdklf
  輸出:jklf fjlsjf fjsdklf
  //延伸:
  //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

4、getline()  接受一個字符串,可以接收空格並輸出,需包含“#include”

  #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流,是不一樣的兩個函數

5、gets()   接受一個字符串,可以接收空格並輸出,需包含“#include”

  #include<iostream>
  #include<string>
  using namespace std;
  main ()
  {
  char m[20];
  gets(m);     
  cout<<m<<endl;
  }

輸入:abc abc abc

輸出:abc abc abc

 

類似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

 

自我總結:

1、讀取字符串用getline()或gets()

   1)getline()用於string 類型,並且直接接收一行

   2)gets()用於接收字符數組(char a[])

 

2、想要過濾掉多余的字符時(例如:空格),可以使用cin.get()的第三種用法(cin.get(無參數))來將其讀取

3、在特殊情形可以使用cin.getline()來接受特定的字符串

  例如:給你一個字符串,你想要接受某個字符前的子串

 

         輸入  abcdfeghij     (此時我想要'f'前的字符串)

 

               可以使用cin.getline(  ,    , 'f')來獲取


免責聲明!

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



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