2012-04-24 123 views
-1
string Foo(string letter) 
{ 


     for (int j = 0; j < (int)alphabet.length(); j++) 
    { 

      if (letter[0] == (alphabet[j])); 
       return "SUCCESS"; 
     } 

     return "FAILURE"; 


} 

alphabet = "Test"; 

cout << Foo("f") << endl; 

這打印SUCCESS甚至認爲它不應該。我的比較運算符有什麼問題?比較字符串C++

+0

爲什麼不只是'return(letter == alphabet)? 「SUCCESS」:「FAILURE」;'或者'std :: string :: compare'? – Mahesh 2012-04-24 00:41:03

+0

@Mahesh:這是不清楚的標題,這不是他實際做的。看看代碼。 – Jasper 2012-04-24 00:45:44

+0

@Jasper我知道代碼與標題無關。 OP只是比較迭代中的第一個字符。我認爲這不是他希望從標題建議中得到的。 – Mahesh 2012-04-24 00:48:29

回答

9
if (letter[0] == (alphabet[j])); // Note the semicolon at the end 

你有一個空的if緊接着return "SUCCESS";

刪除分號:

if (letter[0] == alphabet[j]) 
    return "SUCCESS"; 
+0

瘋狂的錯誤消息和代碼只是在運行,但是做了一些不同的事情,而不是告訴我拋開了什麼問題,我仍然愛C++:D – Jasper 2012-04-24 00:41:25

+0

@Jasper,Eh,它們可以是有用的。 'if(setup()&& goodToCallAfterSetup());''while''比'if'更好地使用它。 'while(!keyPressed(「space」)); //等待他們按下空格' – chris 2012-04-24 00:50:15

+0

@chris除了在這些情況下太容易誤解你想要做的事情,你可以在if(setup())goodToCallAfterSetup();'第一次,並且第二你不應該做(阻塞/忙等待)(它甚至可能不工作,因爲通常這些東西是從內存中讀取的,而不是實時結果) – Jasper 2012-04-24 00:59:05

1

您在

if (letter[0] == (alphabet[j])); 
上線

末有一個分號10.

意外的分號? :-)