2015-01-15 108 views
0

我是C++新手。我試圖根據在cin中選擇的數字爲一個月分配一個字符串。 這是我在一個函數中的代碼。C++在if語句中分配字符串變量

cout << "Enter your birth month: "; 

cin >> mm; //Birth Month// 

int mm; 

std::string month; 

if(mm == 5 || mm == 05){ 
    std::string month = "May"; 
} 
    // If month is equal to 5 or 05, set string variable month to May 

cout << "You were born in the month of " << month << endl; 

如果mm等於5,我如何將變量「month」賦值給「may」?

+0

你的問題是什麼? – Borgleader 2015-01-15 17:35:21

+0

對不起,如果我是一個很模糊。編輯 – 2015-01-15 17:36:26

+1

「我認爲......」爲什麼假設而不是查找它? – crush 2015-01-15 17:36:31

回答

7

你的字符串變量被另一個聲明中if塊範圍實際上陰影

if(mm == 5 || mm == 05) { 
    std::string month = "May"; // That value is gone after the `}` 
} 

你可能想要寫

if(mm == 5) { 
    month = "May"; // Note the type declaration is omitted here 
} 

另外請注意,我爲什麼我的樣品中ommitted mm == 05上面是,因爲

if(mm == 5 || mm == 05) 

是錯誤的。第二個比較表達式實際上與八進制整數文字進行比較,並且您當然不希望這樣做。

if(mm == 5) 

就足夠了。

+4

,可能只是'如果(mm == 5)'並且將'int mm'聲明移動到'cin'上方。 – vsoftco 2015-01-15 17:36:59

+0

正確的是,他正在重新聲明變量。 – crush 2015-01-15 17:37:13

+0

@vsoftco是的,THX指出了這一點。 – 2015-01-15 17:39:40

0
month = "May"; 

這是一項任務。

std::string month = "May"; 

這不是一項任務。這是我們的一個聲明。您正在聲明一個名爲month的新變量,與您可能具有的同名變量無關。

1

你已經宣佈你的字符串上方,那麼上月一個簡單的賦值操作將工作:

if(mm == 5 || mm == 05){ 
    month = "May"; 
} 

而且,即使用戶輸入「05」爲整數,它會被存儲爲「5」 ,所以沒有必要的條件

|| mm == 05 

側面說明,您必須將CIN語句之前宣佈「INT毫米」,像這樣:

int mm; 
cout << "Enter your birth month: "; 
cin >> mm; //Birth Month// 
+0

謝謝你讓我知道0被忽略,它會結束。我也不確定爲什麼我在cin之後發佈int mm。它在我的devc函數的開頭。謝謝你的幫助 – 2015-01-15 17:57:10