![](/img/trans.png)
[英]Changing the “Press any key to Continue…” in C++ using Visual Basics
[英]C++ "Press any key to continue" Issue
我的問題是關於我寫的一個小 C++ 程序(有點類似於 Zork)。我對編碼很陌生,所以如果我的問題沒有任何意義,請不要怪我。這是代碼:
#include <iostream>
using namespace std;
int main()
{
cout << "Du befindest dich in einem dunklem Wald,um dich herum ist es dunkel.\n Vor dir liegt eine Fakel.\n Gebe 1 und Enter ein um die Fakel an dich zu nehmen \n oder 2 und Enter um sie in Ruhe zu lassen \n" ;
int Entscheidung;
cin>> Entscheidung;
switch (Entscheidung) {
case 1:
cout <<"Du zündest die Fakel an,deine Umgeben ist nun sichtbar \n";
break;
case 2:
cout <<"Du lässt die Fakel liegen,um dich herum bleibt es Dunkel \n";
break;
}
if (Entscheidung==1) {
cout << "Vor dir steht ein Elf,er scheint friedlich \n Gebe 1 ein um ihn anzusprechen oder 2 um ihn Anzugreifen \n";
}
if(Entscheidung==2){
cout<< "Du hörst Schritte im dunkeln. \n Gebe 1 ein um die Fakel zu nehmen und den Geräuschen auf den Grund zu gehen \n oder 2 um dich von den Geräuschen weg zu bewegen \n";
}
int Entscheidung2;
switch (Entscheidung2) {
case 1:
cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
break;
}
return 0;
}
我的問題是,如果我運行程序,我只能輸入一個變量,然后按任意鍵繼續出現,從那時起,我無法輸入任何新內容,因為它剛剛關閉。希望有人可以幫助我。 提前謝謝
PS:我使用 Code::Blocks 作為 IDE 和編譯器
您的邏輯沒問題,但您忘記讀取變量Entscheidung2
;
問題是您確實聲明了變量Entscheidung2但從未初始化/讀取,因此條件
switch (Entscheidung2) {
case 1:
cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
break;
}
從未被處決...
添加cin>> Entscheidung2;
例如,在變量聲明之后。
一切都會好起來的:
int Entscheidung2; switch (Entscheidung2) {
這是未定義的行為。 Entscheidung2
既未初始化也未設置; 你不能試圖讀取它的值,但這就是你在switch
語句中所做的。
使用足夠高的警告級別,您可以讓編譯器檢測到此類錯誤。 此類警告的示例:
warning: 'Entscheidung2' is used uninitialized in this function
warning C4700: uninitialized local variable 'Entscheidung2' used
顯然,目的是在使用它之前將一個值讀入Entscheidung2
:
int Entscheidung2;
cin >> Entscheidung2;
switch (Entscheidung2) {
這將刪除未定義的行為並匹配假設的意圖。
出現按任意鍵繼續
這與您的程序無關。 這是來自運行程序的環境的消息。
我使用 Code::Blocks 作為 IDE 和編譯器
不。“Code::Blocks”不是編譯器。
並且請不要使用非英語標識符。 對於不會說德語的人來說,“Entscheidung”讀起來就像是一個完全隨機的字符系列,發布帶有無法辨認的標識符的代碼是不友好的。
首先,您甚至不需要 if 函數。 使用 case 進行比較就足夠了。 否則,您會將變量與 1 和 2 進行兩次比較,這是沒有意義的。 然后,您還應該使用cin從控制台獲取輸入,這在下面的答案中已經提到。
#include <iostream>
using namespace std;
int main()
{
cout << "Du befindest dich in einem dunklem Wald,um dich herum ises dunkel.\n Vor dir liegt eine Fakel.\n Gebe 1 und Enter ein um die Fakel an dich zu nehmen \n oder 2 und Enter um sie in Ruhe zu lassen \n" ;
int Entscheidung;
cin>> Entscheidung;
switch (Entscheidung) {
case 1:
cout <<"Du zündest die Fakel an,deine Umgeben ist nun sichtbar \n";
cout << "Vor dir steht ein Elf,er scheint friedlich \n Gebe 1 ein um ihn anzusprechen oder 2 um ihn Anzugreifen \n";
break;
case 2:
cout <<"Du lässt die Fakel liegen,um dich herum bleibt es Dunkel \n";
cout<< "Du hörst Schritte im dunkeln. \n Gebe 1 ein um die Fakel zu nehmen und den Geräuschen auf den Grund zu gehen \n oder 2 um dich von den Geräuschen weg zu bewegen \n";
break;
}
int Entscheidung2;
cin>>Entscheidung2;
switch (Entscheidung2) {
case 1:
cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
break;
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.