請教一下,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; }
因先生程式碼過長,系統自動省略
話說你的輸入的部份我有點看不懂(很少用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;
}