2017-10-15 114 views
-3

這不會發生在我使用的任何其他IDE中,只有VS.Visual Studio C++完全忽略if語句或if語句中的行。 VS 2015

它忽略了if語句中的'std :: cout',有時它忽略了if語句。

爲了演示我把一個簡單的程序放在一起。

#include <iostream> 
#include <Windows.h> 

void main() 
{ 
    char Auth_Key_Requested[10]; 
    std::cout << " Enter Auth_Key { : } : "; 
    std::cin >> Auth_Key_Requested; 
    if (Auth_Key_Requested == " K3knksh ") 
    { 
     std::cout << " Auth_Key_Requested == True, GJ.\n "; 
     Sleep(5000); 
     exit(0); 
    } else if (Auth_Key_Requested != " K3knksh ") 
    { 
     Sleep(5000); 
     exit(0); 
    } 
} 

回覆和回答將有很大幫助。

+3

你可以像這樣的字符串不比較C數組 – Tobias

+0

你怎麼知道它「忽略」的路線?我不信。我認爲這可能只是緩衝,而忽略了iostream的工作方式。或者你的商業邏輯是錯誤的。在帶有斷點的調試器中運行也會演示。 –

+0

s /'Auth_Key_Requested ==「K3knksh」'/'strcmp(Auth_Key_Requested,「K3knksh」)' – user0042

回答

1

它不會忽略if情況,它只是將條件評估爲false。你比較C風格字符串(這是原始字符數組中的字符串)的方式是錯誤的。正確的做法是使用函數strcmp。該函數採用兩個C風格的字符串,並返回0,如果它們相同。積極和消極的價值解釋here。 所以,你的if語句應該如下:

if (strcmp(Auth_Key_Requested, " K3knksh ") == 0) 
{ 
    std::cout << " Auth_Key_Requested == True, GJ.\n "; 
    Sleep(5000); 
    exit(0); 
} else 
{ 
    Sleep(5000); 
    exit(0); 
} 
+0

非常感謝。 – MAXBD