cin.get函數用法


----------------------------------------------------------------------------------------

轉載,侵刪(手動狗頭),原文鏈接附於文末;

-------------------------------------------------------------------------------------

C++ : cin.get()函數和cin函數的使用
筆者由於自己忘記了cin函數怎么用,所以這里趁自己復習C++的空子正好可以做做記錄。

1、cin>>         

用法1:最基本,也是最常用的用法,輸入一個數字:

#include <iostream> 
using namespace std; 
main () 

int a,b; 
cin>>a>>b; 
cout<<a+b<<endl; 
}

輸入:2[回車]3[回車] 
輸出:5

注意:>> 是會過濾掉不可見字符(如 空格 回車,TAB 等) 
cin>>noskipws>>input[j];//不想略過空白字符,那就使用 noskipws 流控制

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

#include <iostream> 
using namespace std; 
main () 

char a[20]; 
cin>>a; 
cout<<a<<endl; 
}

輸入:jkljkljkl 
輸出:jkljkljkl

輸入:jkljkl jkljkl       //遇空格結束 
輸出:jkljkl

2、cin.get()

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

#include <iostream> 
using namespace std; 
main () 

char ch; 
ch=cin.get();               //或者cin.get(ch); 
cout<<ch<<endl; 
}

輸入:jljkljkl 
輸出:j

---恢復內容結束---
————————————————
版權聲明:本文為CSDN博主「Geeksongs」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Geeksongs/java/article/details/89038269

 

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2020.5.6.16.43第一次更新:
轉載博客園中一位大佬的博文,侵刪,原文鏈接:https://www.cnblogs.com/xingzhuan/p/10553662.html

C++中cin.get 和cin.peek 及其相關的用法

 

今天寫代碼遇到了 一點點困惑,題目要求大致為:

  輸入一串數字(包含一些空格)當鍵入回車時計算出輸入數字的和

其實現代碼如下:

復制代碼
 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6      int a;
 7      int sum;
 8      
 9      while(cin>>a)
10      {
11          sum+=a;
12          while(cin.peek()==' ')//觀測到當前字符為空格的話
13          {
14              cin.get();    //從流中提取當前的空格
15          }
16          
17          if(cin.peek()=='\n')  //觀測到當前字符為換行符的話直接終止
18          break;
19      }
20      
21      cout<<"結果是:"<<sum<<endl;
22      return 0;
23     
24  } 
復制代碼

 

程序里用到了cin.peek()和cin.get(),順便學習一下這兩個的用法:

參考博文傳送門:http://c.biancheng.net/cpp/biancheng/view/2231.html

        https://blog.csdn.net/ReCclay/article/details/60782267

下面是我對於這兩個函數用法的一個簡單輸出測試:

復制代碼
 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int a;
 7     int b;
 8     int c;
 9     while(cin>>a)
10     {
11         b+=a;
12         while(cin.peek()==' ') //探測到空格 
13         {
14             c=cin.get(); //這里是提取出空格 
15             cout<<"a="<<a<<endl ;
16         }
17         if(cin.peek()=='\n')
18         {
19             break;
20         }
21         
22     }
23     cout<<"和為:"<<b<<endl;
24     cout<<"c = "<<c<<endl; 
25 }
復制代碼

測試輸入輸出結果為:【輸入為1 2 3 4 5】

  

【輸入為12 13 14 2 3】

 

  這里c其實是提取出的空格的ASCII碼,所以是32,而至於a則是每次提取提取出的數字。

 cin.get()

  函數是cin輸入流對象的成員函數,它有3種形式:無參數的,有一個參數的,有3個參數的。

  無參數的類似於C語言中的getchar(),從制定的輸入流中提取一個字符。C語言中的getchar函數與流成員函數cin.get( )的功能相同,C++保留了C的這種用法,可以用getchar(c)從鍵盤讀入一個字符賦給c。

  無參數用來從指定的輸入流中提取一個字符(包括空白字符),函數的返回值就是讀入的字符。 若遇到輸入流中的文件結束符,則函數值返回文件結束標志EOF(End Of File),一般以-1代表EOF,用-1而不用0或正值,是考慮到不與字符的ASCII代碼混淆,但不同的C ++系統所用的EOF值有可能不同。

有一個參數:

      cin.get(ch)
   其作用是從輸入流中讀取一個字符,賦給字符變量ch。如果讀取成功則函數返回true(真),如失敗(遇文件結束符) 則函數返回false(假)。

有兩個參數:

      cin.get(字符數組, 字符個數n, 終止字符)
  或
      cin.get(字符指針, 字符個數n, 終止字符)
  其作用是從輸入流中讀取n-1個字符,賦給指定的字符數組(或字符指針指向的數組),如果在讀取n-1個字符之前遇到指定的終止字符,則提前結束讀取。如果讀取成功則函數返回true(真),如失敗(遇文件結束符) 則函數返回false(假)。

傳送門:http://c.biancheng.net/cpp/biancheng/view/2231.html

    https://blog.csdn.net/ReCclay/article/details/60782267

cin.peek()

  cin.peek() 其返回值是一個char型的字符,其返回值是指針指向的當前字符, 
  但它只是觀測,指針仍停留在當前位置,並不后移。如果要訪問的字符是文件結束符,則函數值是EOF(-1)

復制代碼
 1 #include <iostream>
 2 using namespace std;
 3 int main ()
 4 {
 5     char c;
 6     int n;
 7     char str[256];
 8     cout << "Enter a number or a word: ";
 9     c=cin.peek();
10     if ( (c >= '0') && (c <= '9') )
11     {
12         cin >> n;
13         cout << "You have entered number " << n << endl;
14     }
15     else
16     {
17         cin >> str;
18         cout << " You have entered word " << str << endl;
19     }
20     return 0;
21 }

 


免責聲明!

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



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