2014-01-29 31 views
-2

的病情,我想用我插入這個詞用它來使,如果條件顯示出一些字就比較結果爲真比較比較。 這裏是我的代碼如何插入一個單詞,用它做的,如果在C++

#include <iostream> 
using namespace std; 

int main() 
{ 
    char u[5]; 
    cout<<" p  " <<"  c  "<<"  U "<<endl; 
    cout<<" pepsi=5"<<"  coca=3"<<"  7-UP=2"<<endl; 
    cout<<"CHOOSE your drink"<<endl; 
    cin>>u; 
    if (u=="pepsi") 
     cout<<"your choice is pepsi and ur bill is 5 "; 
} 
+2

使用'std :: string u;',你的代碼應該可以工作。 (事實上​​,如果uesr進入'pepsi',你就有未定義的行爲。) –

+0

嘗試在格式化方面稍微努力一點。此外,要麼不使用用戶輸入的C字符串(使用std :: string),要麼有更大的緩衝區。當他們輸入「可口可樂」時會發生什麼? – crashmstr

+0

@crashmstr即使''百事可樂''在這裏也太長了。 –

回答

1

第一,今後我會建議試圖對你的問題是什麼,你不明白,更具體。只是說我想做X,這裏是我的代碼給我們的工作很少,我們基本上只是猜測你有什麼問題。

現在到什麼,我相信您有(我假設,因爲你沒有告訴我們什麼錯誤)問題。

在這種情況下,你使用的是字符數組爲5的長度現在當你使用,你需要考慮到所有的變量可以存儲合理的投入實際上將適應這個字符數組字符數組。

讓我們看看百事可樂。你可能會認爲它會適合,但事實上它並不是因爲你忘記了最後添加的空字符。這就是它的樣子。

u[0] = 'p' 
u[1] = 'e' 
u[2] = 'p' 
u[3] = 's' 
u[4] = 'i' 
u[5] = '\0' 

所以,你可以看到這個單詞中實際上有6個字符會導致溢出。我認爲這是你的問題。

現在我們該如何解決這個問題?正如其他人在評論中所說的,如果你使用的是C++,那麼你最好使用std :: string來解決這個問題,因爲它會隱藏你在使用C風格字符串時處理的大部分問題。你現在正在使用)。然後,一旦你對這門語言感覺更舒適,你可以回來重溫C風格的字符串。

用的std :: string它會是這個樣子。請記住,在測試字符串大小寫時(IE「字符串」與「字符串」不一樣)。

std::string choice; 
std::cin >> choice; 
if (choice == "pepsi") 
{ 
    std::cout << "You selected pepsi!" << std::endl; 
} 

希望對您有所幫助並解決您的問題。

相關問題