假如測試資料是:
1 2a b3 4
我跑出來的結果會是7,因為2a的那一個2都被當成int拿去加了...
以下是我的程式碼..能幫我看看問題嗎
#include <iostream>
#include <sstream>
using namespace std;
int main(){
string Ain;
while(getline(cin,Ain)){
istringstream Aaa(Ain);
int Bbb,Ccc=0;
while(!Aaa.eof()){
if(Aaa>>Bbb){
Ccc+=Bbb;
}
else{
Aaa.clear();
Aaa>>Ain;
}
}
cout<<Ccc<<endl;
Ccc=0;
}
return 0;
}
我借用了你的程式來解這題,我加了一些小修改,又加了一個檢測,才通過,
我覺得你寫的很棒,可以改得比我的更好
另外我發現我的程式若空格太多,結果會多加1,所以才用一個變數one來控制,我也不知道為什麼空格一多就會多1
#include <cstdlib>
#include <iostream>
#include <sstream>
using namespace std;
int check(string );
int main(void)
{
string Ain, Bbb;
int Ccc,one;
while(getline(cin,Ain)){
istringstream Aaa(Ain);
Ccc=0;
while(Aaa){
Aaa>>Bbb;
one=check(Bbb);
Ccc+=one;
}
cout << Ccc-one << endl;
}
system("PAUSE");
return 0;
}
int check(string str){
int inter;
istringstream Ddd(str);
for(int i=0; i<str.length(); i++)
if(str[i]>57 || str[i]<48) return 0;
Ddd>>inter;
return inter;
}
我借用了你的程式來解這題,我加了一些小修改,又加了一個檢測,才通過,
我覺得你寫的很棒,可以改得比我的更好
另外我發現我的程式若空格太多,結果會多加1,所以才用一個變數one來控制,我也不知道為什麼空格一多就會多1
#include
#include
#include
using namespace std;
int check(string );
int main(void)
{
string Ain, Bbb;
int Ccc,one;
while(getline(cin,Ain)){
istringstream Aaa(Ain);
Ccc=0;
while(Aaa){
Aaa>>Bbb;
one=check(Bbb);
Ccc+=one;
}
cout << Ccc-one << endl;
}
system("PAUSE");
return 0;
}
int check(string str){
int inter;
istringstream Ddd(str);
for(int i=0; i
if(str[i]>57 || str[i]<48) return 0;
Ddd>>inter;
return inter;
}
請問紅色部分的意思是什麼?
為啥可以那樣寫?