我想比較兩個字符串字符使用我創建的bool match(string,string)
字符,我相信它比較正確,當我輸入兩個字符串不相等,它會輸出false!但是當我檢查布爾時,它沒有返回false。 我想不出這種行爲的原因,我希望有人能幫助我。 代碼:奇怪布爾returing行爲
#include <iostream>
#include <cassert>
#include <cmath>
#include <fstream>
#include <vector>
using namespace std;
bool match(string pattern, string source)
{
if(pattern.size() == 0&& source.size() == 0)
{
return true;
}
else if(pattern[0] == source[0])
{
pattern.erase(0,1);
source.erase(0,1);
match(pattern,source);
}
else
{
cout << "false" << endl;
return false;
}
}
int main()
{
string test1 = "hballo";
string test2 = "hallo";
bool match_found = match(test1,test2);
if(match_found)
{
cout << "match found!"<< endl;
}
else if(!match_found)
{
cout << "match not found!"<< endl;
}
}
謝謝你的回答NPE!即使它不是最快的答案,我仍然感謝你的回答! –
除此之外,'pattern [0] == source [0]'部分也被破壞了。此時'pattern'或'source'可以爲空。 – melpomene
@melpomene:好了,謝謝! – NPE