即使输入正确,我的Else cout也会显示

时间:2017-04-07 12:32:48

标签: c++

即使我输入毕达哥拉斯或概率,它仍会显示我的其他输出"主题不受支持"我该如何解决这个问题?

search = "Pythagoras";
pos = sentence.find(search);
if (pos != string::npos)                        
    cout << "pythagoras entry" << endl;
search = "Probability";
pos = sentence.find(search);
if (pos != string::npos)
    cout << "probability entry" << endl; 
else
    cout << "topic not supported" << endl;

1 个答案:

答案 0 :(得分:0)

如果你的句子包含&#34;毕达哥拉斯&#34;,它将通过第一个 if (输出那里的内容),然后继续&#34; else& #34;检查&#34;概率&#34; - 你发现&#34;毕达哥拉斯&#34;后,你不会打破执行。在句子中,它将用于第二个 if ,输出未找到&#34;主题中的内容&#34;,因为&#34;概率&#34; !=&#34;毕达哥拉斯&#34;。如果你把&#34;概率&#34;在句子中,&#34;未找到主题&#34;不应该输出,除非你没有向我们展示你实际使用的代码。

要解决此问题,我建议使用布尔标志,例如

bool flag = false;
search = "Pythagoras";
pos = sentence.find(search);
if (pos != string::npos)                    
{
    cout << "pythagoras" << endl;
    flag = true;
}
search = "Probability";
pos = sentence.find(search);
if (pos != string::npos)
{                    
    cout << "probability" << endl; 
    flag = true;
}

if (!flag)
    cout << "not supported" << endl;