2017-10-15 90 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