#7329: C++ cin.getline 遇到空行後就無法繼續讀取資料


gil (恆誠)

學校 : 臺北市立松山高級工農職業學校
編號 : 27718
來源 : [203.64.46.82]
最後登入時間 :
2014-11-12 11:28:00
a271. 彩色蘿蔔 -- 兔子 | From: [112.104.73.16] | 發表日期 : 2012-12-22 01:35

請教一下,cin.getline 遇到空行後就無法繼續讀取資料。 想請教各位是如何解決的,謝謝 #include<iostream> using namespace std;   int main (void){ 	int n; 	while(cin>>n){ 		while(n){ 			n--; 			long r[6]; 			for(int i=0;i<6;i++) cin>>r[i]; 			char f[100]; 			cin.getline(f,1,'\n'); 			cin.get(f,100,'\n'); 			long poi=0; 			for(int i=0;i<cin.gcount();i+=2){ 				r[5]-=r[4]*poi; 				if(r[5]<0){ 					cout<<"bye~Rabbit"<<endl; 					break; 				} 				switch(f[i]){ 				case '1': 					r[5]+=r[0]; 					break; 				case '2': 					r[5]+=r[1]; 					break; 				case '3': 					r[5]-=r[2]; 					break; 				case '4': 					r[5]-=r[3]; 					poi++; 				} 			} 			if(r[5]>0) 				cout <<r[5]<<"g"<<endl; 		} 	} 	return 0; }
 
#7351: Re:C++ cin.getline 遇到空行後就無法繼續讀取資料


qazwsxedcrfvtg14 (花朵艷麗終散落 誰人世間能長久 今日攀越高山嶺 醉生夢死不再...)

學校 : 臺北市立忠孝國民中學
編號 : 12481
來源 : [122.116.29.29]
最後登入時間 :
2022-08-25 22:53:55
a271. 彩色蘿蔔 -- 兔子 | From: [1.34.218.96] | 發表日期 : 2012-12-29 21:50

因先生程式碼過長,系統自動省略


話說你的輸入的部份我有點看不懂(很少用cin.getline()),所以我改成的我常用的方式(gets())。

 code:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main (void){
int n;
cin>>n;
while(n){
n--;
long r[6];
for(int i=0;i<6;i++)
cin>>r[i];
char f[100];
gets(f);
gets(f);
long poi=0,len=strlen(f);
for(int i=0;i<len;i+=2){
r[5]-=r[4]*poi;
if(r[5]<0){
cout<<"bye~Rabbit"<<endl;
break;
}
switch(f[i]){
case '1':
r[5]+=r[0];
break;
case '2':
r[5]+=r[1];
break;
case '3':
r[5]-=r[2];
break;
case '4':
r[5]-=r[3];
poi++;
}
}
if(r[5]>0)
cout <<r[5]<<"g"<<endl;
}
return 0;
}


 
#8198: Re:C++ cin.getline 遇到空行後就無法繼續讀取資料


a450 (要学会宽容)

學校 : 福建省福州第十九中学
編號 : 33926
來源 : [118.189.34.85]
最後登入時間 :
2016-04-05 21:29:33
a271. 彩色蘿蔔 -- 兔子 | From: [110.84.214.46] | 發表日期 : 2013-09-19 13:05


长度100怎么会够用  
ZeroJudge Forum