我試圖通過開發一個基本系統來制作一個基本的選擇你自己的冒險風格的游戲,程式通過該系統接收用戶字符輸入并使用 if-else 陳述句做出決定以按特定模式附加字串。在下面的程式中,我嘗試在一組條件之后使用 strcat 來產生不同的輸出,但是我的輸出一直失敗得很慘。有人能提供的任何幫助都是不可思議的。
#include <iostream>
#include<cstring>
#include<string>
#include<iomanip>
#include<ios>
#include<limits>
using namespace std;
int main()
{
char str1[50]= "F*ck";
char str2[50]= "You";
char str3[50]= "Me";
char answer[50];
cout<< "Do you like rock music yes or no?";
cin>> answer;
if (answer== "no"){
cout<< strcat(str1,str2);
} else (answer== "yes");{
cout<< strcat(str1,str3);
}
return 0;
}
uj5u.com熱心網友回復:
您不能使用operator==. 您需要strcmp()改用:
if (strcmp(answer, "no") == 0)
還有,else (answer== "yes");{也錯了。不僅是因為比較問題,還因為您缺少一個必需if的;. 應該是這樣else if (strcmp(answer, "yes") == 0){。
話雖如此,你真的應該使用std::string而不是char[],例如:
#include <iostream>
#include <string>
using namespace std;
int main() {
const string str1 = "F*ck";
const string str2 = "You";
const string str3 = "Me";
string answer;
cout << "Do you like rock music yes or no?";
cin >> answer;
if (answer == "no"){
cout << str1 << str2;
} else if (answer == "yes"){
cout << str1 << str3;
}
return 0;
}
uj5u.com熱心網友回復:
當您使用==運算子比較 C 樣式字串時,您實際上是在比較字串的地址,而不是內容,這在這種情況下沒有幫助。嘗試改用strcmp()庫例程,您可能會在嘗試做的事情上走得更遠。
uj5u.com熱心網友回復:
if (answer== "no")你比較記憶體地址的answer和字串文字"no",這樣的條件是false
你應該這樣使用strcmp():
if(strcmp(answer, "no") == 0)
另外,您else的語法錯誤。你應該使用else if
將其更改為:
else if (strcmp(answer, "yes") == 0)
{
std::cout<< strcat(str1,str3);
}
或者甚至更好,將 C 風格的字串扔出視窗并使用std::string。
#include <iostream>
#include <cstring>
#include <string>
#include <iomanip>
#include <ios>
#include <limits>
// using namespace std; is bad
int main()
{
std::string str1{"F*ck"};
std::string str2{"You"};
std::string str3{"Me"};
std::string answer;
std::cout<< "Do you like rock music yes or no?";
std::cin>> answer;
if (answer == "no")
{
std::cout<< (str1 str2);
}
else if(answer == "yes")
{
std::cout << (str1 str3);
}
return 0;
}
uj5u.com熱心網友回復:
謝謝大家的幫助,我能夠重寫程式,現在它可以作業了。對于基于文本的選擇你自己的冒險游戲真的很有幫助。新計劃如下:
#include <iostream>
#include<cstring>
#include<string>
using namespace std;
int main() {
char str1[50]= "F*ck";
char str2[50]= " You";
char str3[50]= " Me";
char answer[50];
cout<< "Do you like rock music (yes or no)?"<<endl;
cin>> answer;
if (strcasecmp(answer,"no") == 0){
cout<< strcat(str1,str2)<<endl;
} else if (strcasecmp(answer,"yes") == 0){
cout<< strcat(str1,str3)<<endl;
} else {
cout<< strcat(str1," off")<<endl;
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/342446.html
上一篇:在CSharp中替換Ifelse
下一篇:在2個控制器功能之間傳遞資料
