请大神们看看这段代码有何错,为何得不到我想要的结果?
string ZH(int const &b,vector<string> const &SF) {
vector<string>::const_iterator k=SF.begin();
ostringstream oss;
oss<<b;
string q=oss.str();
string a1=*(k+0),a2=*(k+1),a3=*(k+2),a4=*(k+3),a5=*(k+4);
if(a1.find(q)!=string::npos)return "水";
else if(a2.find(q)!=string::npos)return "火";
else if(a3.find(q)!=string::npos)return "木";
else if(a4.find(q)!=string::npos)return "金";
else if(a5.find(q)!=string::npos)return "土";
else return "";
}
string WX(string const &b1,int const &b,vector<string>const &SF) {
string const &b2=ZH(b,SF);
if((b1+b2=="金水")||(b1+b2=="木火")||(b1+b2=="水木")||(b1+b2=="火土")||(b1+b2=="土金"))return "SY";
else if((b1+b2=="金土")||(b1+b2=="木水")||(b1+b2=="水金")||(b1+b2=="火木")||(b1+b2=="土火"))return "SZ";
else if((b1+b2=="金木")||(b1+b2=="木土")||(b1+b2=="水火")||(b1+b2=="火金")||(b1+b2=="土水"))return "KY";
else if((b1+b2=="金火")||(b1+b2=="木金")||(b1+b2=="水土")||(b1+b2=="火水")||(b1+b2=="土木"))return "KZ";
else if((b1+b2=="金金")||(b1+b2=="木木")||(b1+b2=="水水")||(b1+b2=="火火")||(b1+b2=="土土"))return "TT";
else return "";
}