2016-03-07 153 views
0

我正在嘗試創建一個提出問題的程序,並根據響應給出兩個答案中的一個(響應=是或否)。這裏是代碼: -錯誤代碼C2451無法運行基本程序

#include <iostream> 

#include <string> 

using namespace std; 

int main() 

{ 
    string answer, yes; 

    cout << "Is Lucy a top lass ? enter yes or no" << endl; 
    cin >> answer; 
    if (answer == yes) 

    { 
     cout << "Correctomundo" << endl; 
    } 
    else 
    { 
     cout << " Blasphemy ! " << endl; 
    } 
    return 0; 
} 

我得到錯誤C2451。任何人都可以請解釋我如何編輯代碼才能以我想要的方式工作?

我正在使用頭文件iostream和字符串。因爲它們包含在三角括號內,所以不會顯示某些原因。

謝謝。

回答

2

if (answer = yes)

一)它是一個分配(=)不相等性檢查(==

B)yes沒有價值 - 你可能是指像string answer, yes = "yes";或只使用"yes"直接代替具有的變量yes

+0

可能提供b)的解決方案。 – Nard

+0

謝謝我現在有程序運行,但是有一個運行時錯誤。當我回答「是」時,我得到了else語句「褻瀆!」的輸出。 ,我希望它輸出if語句「Correctomundo」。這是因爲我需要將值分配給是嗎?如果是的話,我該怎麼做? –

0

你的條件表達式更改爲

if(answer == yes) 

你錯過了一個等號(=)。 執行此更改將無誤地運行您的程序。但變量是沒有價值的。所以總是第二個條件將失敗。

0

在您的行if (answer = yes)中,您收到錯誤消息。我認爲你的意思是if (answer == "yes")。 (您yes字符串變量沒有被初始化,所以我猜你希望它是一個字符串文本)

0

你會得到更多有關C2451錯誤here

在該行發生這個錯誤

if (answer = yes) 

您使用賦值運算符,而不是比較操作 所以當它編譯它成爲

if(answer) 

和你得到的錯誤,使之成爲比較操作更改您的代碼

if (answer == yes) 

。也不會忘記初始化字符串變量「是」 我希望這會解決您的問題。

+0

謝謝我編輯了程序,但是現在我得到一個運行時錯誤,當我輸入yes時,它給出else語句的輸出。你知道如何解決這個問題嗎? –

+0

,因爲你沒有初始化yes變量。字符串答案,是=「是」;或在條件,你必須檢查是否(答案==「是」) –

+0

Thankyou程序現在工作:) –

相關問題