寫給快要被c++ input推倒的孩子們(?*?ω?)?

剛剛做了一道水題。然而雖然是水題莹桅,input卻自帶磨人屬性化焕。它的input是這樣的:

name,age,id,blah,blah,blah...

明明可以用空格解決的事情它非要用逗號,簡直是專殺用c++的孩子坝咐。
于是在網(wǎng)上搜了一番以后(并沒有搜題解!(/ω╲))析恢,我寫下了丑陋的input代碼墨坚,總算糊弄過去了_( :зゝ∠):

char a; // comma storage
char InName[100]; int InAge; char InIdNum[100];
int InGrade1; int InGrade2; int InGrade3; int InGrade4;
//freopen("test.txt","r",stdin);
cin.getline(InName, 100, ',');
cin>>InAge;
a = getchar();
cin.getline(InIdNum, 100, ',');
cin>>InGrade1>> a >>InGrade2>> a >>InGrade3>> a >>InGrade4;

因為cin可以忽略掉逗號所以我們要集中火力解決字符串讀取的問題∮彻遥可以用std::istream::getline(char* s, streamsize n, char delim);這條語句讀取字符串泽篮,以及最后一個參數(shù)可以幫我們吸收掉多余的逗號。"delim"是"delimitation"的縮寫柑船,意思是“定界”帽撑,也就是說在這里輸入的參數(shù)不僅不會被讀取,還會起到讓讀取指針停止的作用鞍时。所以第一條語句cin.getline(InName,100,',') 幫我們把name讀入InName這個size為100的數(shù)組之中亏拉,到‘,’時停下逆巍。
當(dāng)然及塘,如果真的用了"cin.getline()"這個寫法,請一定要記得包頭文件(感覺除了我以外大部分人都不會忘記锐极。笙僚。。_(:зゝ∠)):

#include<iostream>
using namespace std;

然后用cin<<InAge;讀入int類型的age灵再。接下來的逗號可以用a=getchar();來吸收掉肋层。
以下同理,就不多解釋了翎迁。
另外補播一則花絮:神一樣的弟弟告訴我栋猖,cin的讀取速度非常慢,所以在算法競賽中非常不推薦使用鸳兽。還是要好好練習(xí)printfscanf呀掂铐。用好了也堪稱神器的。

這一則心酸故事講完了,下面講講其他的不得不提的不堪回首的血淚史全陨。
個人認(rèn)為如果題目告訴我們會有多少個輸入樣例爆班,這種input是比較好寫的,直接一個for循環(huán)加合法判定就可以搞定辱姨。然而如果題目很腹黑地沒有告訴我們柿菩,就需要由我們自己來判斷是否還有剩余樣例。這里給兩個小例子雨涛,方法都差不多:

#include <stdio.h>
#include <string.h>

while(scanf("%s%s", s, t) != EOF){
        int i, j, slen, tlen;
        slen = strlen(s);
        tlen = strlen(t);
        ......
}

恩枢舶,喜聞樂見的字符串處理。scanf在碰到EOF的時候會自己停手替久。以及這里推薦一個很好用的函數(shù)strlen(s)可以直接獲得輸入字符串的長度凉泄。

另外一個判斷EOF的方法:

while(~scanf("%d", &a[0].x)){
        scanf("%d",&a[0].y);
        if(a[0].x>a[0].y) swap(a[0].x,a[0].y);
        for(int i=1;i<6;i++){
            scanf("%d%d",&a[i].x,&a[i].y);
            if(a[i].x>a[i].y) swap(a[i].x,a[i].y);
        }
        ......
}       

循環(huán)里的scanf負(fù)責(zé)判斷EOF,以及讀取結(jié)構(gòu)體中的第一個元素蚯根;循環(huán)內(nèi)部的scanf負(fù)責(zé)讀取結(jié)構(gòu)體第二個元素后众。思路和上面的方法差不多:因為有位運算符號"~",所以只要沒到EOF颅拦,scanf就會一直讀下去蒂誉。

最后說一下gets()吧~用來讀取一行的指令。很多人不推薦用gets()因為它事實上已經(jīng)被c++拋棄了距帅。但是在有些謎一樣專門摳輸入的題目面前右锨,gets()有時候可以發(fā)揮出它獨有的功能。
來來來碌秸,我們一起來一發(fā)水題:UVa 227
一看到這道題绍移,我便領(lǐng)悟到,哎呀哮肚,這不就是傳說中的水題嗎登夫。然而敲起來以后,我才發(fā)現(xiàn)允趟,原來我還是圖樣恼策。。潮剪。輸入輸出簡直是個坑涣楷。。抗碰。
就簡單說下gets()在這題里的神通吧~雖然我并沒有ac_(:зゝ∠)狮斗。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int c;
char a[6][6]; char s[1000];
int x,y;
int main(void){
    //freopen("uva227.txt","r",stdin);
    int kase=0;
    while(gets(a[0])){
        if(strcmp(a[0],"Z")==0)return 0;
        for(int i=1;i<5;i++) gets(a[i]);
        memset(s,-1,sizeof(char));
        
        for(int i=0;i<5;i++){
            for(int j=0;j<5;j++){
                if(a[i][j]==' '){
                    x=i;y=j;
                }
            }
        }
        ......
}

除了上面提到的這些,c++還有很多其他深藏功與名的黑科技弧蝇,比如getchar()什么的碳褒。但因為我自己也沒搞清楚折砸,所以以后再說~
就醬。

特別鳴謝:

神一樣的弟弟

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沙峻,一起剝皮案震驚了整個濱河市睦授,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摔寨,老刑警劉巖去枷,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異是复,居然都是意外死亡删顶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門淑廊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逗余,“玉大人,你說我怎么就攤上這事季惩×攒” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵蜀备,是天一觀的道長。 經(jīng)常有香客問我荒叶,道長碾阁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任些楣,我火速辦了婚禮脂凶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘愁茁。我一直安慰自己蚕钦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布鹅很。 她就那樣靜靜地躺著嘶居,像睡著了一般。 火紅的嫁衣襯著肌膚如雪促煮。 梳的紋絲不亂的頭發(fā)上邮屁,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音菠齿,去河邊找鬼佑吝。 笑死,一個胖子當(dāng)著我的面吹牛绳匀,可吹牛的內(nèi)容都是我干的芋忿。 我是一名探鬼主播炸客,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼戈钢!你這毒婦竟也來了痹仙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤逆趣,失蹤者是張志新(化名)和其女友劉穎蝶溶,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宣渗,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡抖所,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了痕囱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片田轧。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鞍恢,靈堂內(nèi)的尸體忽然破棺而出傻粘,到底是詐尸還是另有隱情,我是刑警寧澤帮掉,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布弦悉,位于F島的核電站,受9級特大地震影響蟆炊,放射性物質(zhì)發(fā)生泄漏稽莉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一涩搓、第九天 我趴在偏房一處隱蔽的房頂上張望污秆。 院中可真熱鬧,春花似錦昧甘、人聲如沸良拼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庸推。三九已至,卻和暖如春痛黎,著一層夾襖步出監(jiān)牢的瞬間予弧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工湖饱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掖蛤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓井厌,卻偏偏與公主長得像蚓庭,于是被迫代替她去往敵國和親致讥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容