2015-11-20 196 views
-2

我有一個結構中有兩個數組。我試圖打印出每個數組的內容,但是當我完成所有工作時,無論我打印哪個元素,都無法獲得字符串和零值。這些數組結構爲什麼不打印任何東西?

#include <iostream> 

using namespace std; 

struct menuItem 
{ 
    string breakfastItem[7]; 
    float itemPrice[7]; 
}dish; 

void setMenu() 
{ 
    dish.breakfastItem[0]= "Plain Eggs"; 
    dish.itemPrice[0]= 1.45; 
    dish.breakfastItem[1]= "Bacon and Eggs"; 
    dish.itemPrice[1]=2.45; 
    dish.breakfastItem[2]="Muffin"; 
    dish.itemPrice[2]=0.99; 
    dish.breakfastItem[3]="French Toast"; 
    dish.itemPrice[3]=1.99; 
    dish.breakfastItem[4]="Fruit Basket"; 
    dish.itemPrice [4]=2.46; 
    dish.breakfastItem[5]="Cereal"; 
    dish.itemPrice[5]=0.69; 
    dish.breakfastItem[6]= "Coffee"; 
    dish.itemPrice[6]=.50; 
    dish.breakfastItem[7]="Tea"; 
    dish.itemPrice[7]=0.75; 
} 

int main() 
{ 
    cout << dish.breakfastItem[0]; 
    cout << dish.itemPrice[0]; 
} 
+0

您應該刷新(假設您正在調試並在main的最後一個右大括號處有一個斷點):'cout << dish.breakfastItem [ 0] << endl;' –

+4

你曾經調用過'setMenu()'函數嗎? –

回答

2

首先,爲了使setMenu()中的代碼能夠運行,您需要調用該函數。

int main() 
{ 
    setMenu(); 
    cout << dish.breakfastItem[0]; 
    cout << dish.itemPrice[0]; 
} 

其次

dish.breakfastItem[7]="Tea"; 
dish.itemPrice[7]=0.75; 

是因爲你在過去書寫的數組,然後不確定的行爲。大小爲7的數組的索引範圍爲[0,6]

+0

struct'menuItem'沒有名爲'setMenu'的成員是我在使用第一個代碼時得到的錯誤。而對於未定義的行爲,我有8個菜單項......這不是因爲數組從0開始到7,我有8個序號? – Scotchdew

+0

@Scotchdew我修復了代碼。用你的縮進我想'setMenu()'是'menuItem'的一部分。你沒有8個項目。在'menuItem'中有'string breakfastItem [7];'它創建了一個包含7個項目的數組。如果你想要8,那麼你需要'string breakfastItem [8];' – NathanOliver

+0

哦!有用!!非常感謝!我明白你的意思!雖然我正確地編寫了代碼,但數組中的序數數字卻是崩潰的。再次感謝!你是男人! – Scotchdew

相關問題