【发布时间】:2020-07-09 06:15:28
【问题描述】:
我正在尝试制作基于文本的 C++ 游戏。
我设置了一个播放器类,我现在正在该类中开发一个名为 displayMenu() 的方法,该方法将根据用户的播放器向用户提出各种问题并将数据发送到主/客户端代码和然后该数据将通过播放器类的构造函数创建播放器类的对象。
我的主要问题是......
- 我正在尝试将来自用户的输入(字符串)与他们需要输入的(字符串)进行比较,但我收到一个错误,提示“lower()”无法解决。我相信您必须比较每个字符,但我认为可能有一种更有效的方法来编写代码以提供简单性和可读性。我到底做错了什么?编写此代码的最佳方法是什么?
这是我的代码...
void Player::displayMenu(std::string& PlaName, std::string& cName, int& lvl, int& HP)
{
std::cout << "Player Creation Menu" << std::endl;
std::cout << "====================" << std::endl;
std::cout << std::endl;
std::cout << std::endl;
std::cout << "What is your name? " << std::endl;
std::cin >> PlaName;
std::cout << "What is your specitality? " << std::endl;
std::cin >> cName;
while(cName.lower() != "brawler" || cName.lower() != "thief" || cName.lower() != "persuader" || cName.lower()
!= "gunman")
{
std::cout << "That is not your true specitality..." << std::endl;
std::cout << "You must pick from { 'Brawler', 'Thief' , 'Persuader', 'Gunman' }" << std::endl;
std::cin >> cName;
}
}
【问题讨论】:
-
std::string没有名为lower的方法。 -
这能回答你的问题吗? How to convert std::string to lower case?
-
您可能需要考虑为菜单使用表格。条目可以包括指向要为选择执行的函数的指针。还可以在互联网上搜索“c++ 状态设计模式”。
-
@Ayxan 是的,但我怎么编码呢?这太疯狂了,就像我如何逐个字符地检查并确保它是正确的??
-
不确定什么对你来说很疯狂。链接的副本通过代码示例有一个很好的答案。但是遍历一个字符串并对每个字符应用一个函数无论如何都应该是一项基本任务。把它当作一个挑战;)