日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C++利用cin输入时检测回车的方法

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++利用cin输入时检测回车的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天做TJU的OJ ,其中一道題是先讀入一個字符串,再讀入一個整數,循環往復,直到字符串是空,也就是說回車鍵結束循環。

但是cin對空格和回車都不敏感,都不影響繼續讀入數據,所以需要一種新的方式檢測回車。

方法一:利用getchar()函數

 1 //**************************將輸入的單詞逆序輸出*************************//
 2 #include <iostream>
 3 #include<stack>
 4 #include <stdio.h>
 5 #include<stdlib.h>
 6 using namespace std;
 7  
 8 int main(){
 9     string temp;
10     stack<char> s;//
11     int time;
12     cin >> time;
13  
14     for(int i = 0; i < time ; i++){
15  
16         while(cin >> temp ){   //把輸入賦值
17             for(int j = 0; j < temp.length(); j++){
18                 s.push(temp[j]);
19             }
20  
21             while(!s.empty()){
22                 cout << s.top() ;
23                 s.pop();
24             }
25             if (getchar() == '\n')    //檢測如果是空格,退出循環;
26                 break;
27             cout << " ";
28         }
29         cout << endl;
30     }
31     return 0 ;
32 }

getchar()是stdio.h中的庫函數,它的作用是從stdin流中讀入一個字符,getchar()函數等待輸入直到按回車才結束(前提是緩沖區沒有數據),回車前的所有輸入字符都會逐個顯示在屏幕上。但只有第一個字符作為函數的返回值。

舉個例子:

 1 #include "stdio.h"
 2 #include "stdlib.h"
 3 int main(void)
 4 {
 5     char c;
 6     while((c=getchar())!='\n')     //每個getchar()依次讀入一個字符
 7         printf("%c",c);            //按照原樣輸出
 8     printf("\n");
 9     system("pause");
10     return 0;
11 }

?

  程序運行時,首先停下來,等你輸入一串字符串,輸入完畢后,它把你輸入的整個字符串都輸出來了,咦,你不是說getchar()只返回第一個字符么,這里怎么?

????? 因為我們輸入的字符串并不是取了第一個字符就把剩下的字符串丟掉了,它還在我們的內存中,好比,開閘放水,我們把水放到閘里去以后,開一次閘就放掉一點,開一次就放掉一點,直到放光了為止,這里開閘動作就相當于調用一次getchar()。我們輸入的字符串也是這么一回事,首先我們輸入的字符串是放在內存的緩沖區中的,我們調用一次getchar()就把緩沖區中里出口最近的一個字符輸出,也就是最前面的一個字符輸出,輸出后,就把它釋放掉了,但后面還有字符串,所以我們就用循環把最前面的一個字符一個個的在內存中釋放掉,直到滿足循環條件退出為止。

? ? ? 例子中循環條件里的'\n '實際上就是你輸入字符串后的回車符,所以意思就是說,直到遇到回車符才結束循環,而getchar()函數就是等待輸入(或緩沖區中的數據)直到按回車才結束,所以實現了整個字符串的輸出。當然,我們也可以把循環條件改一下,比如while ((c=getchar())!='a'),什么意思呢,意思就是遇到字符'a'就停止循環,當然意思是如果你輸入“12345a213123 ”那么只會輸出到a前面的那個字符,結果是12345。

?

轉載于:https://www.cnblogs.com/JeasonIsCoding/p/9848359.html

總結

以上是生活随笔為你收集整理的C++利用cin输入时检测回车的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。