You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将std::cin读取内容转为小写?C++文本游戏开发需求

解决文本游戏输入大小写统一判定的问题

嘿,这个问题很好解决!我们只需要把玩家输入的字符串统一转成小写,这样判定的时候就不用管大小写差异了,也不用费劲枚举所有大小写变体。下面是具体的修改步骤和代码:

1. 添加必要的头文件

首先,在你的.cpp文件顶部添加<algorithm>头文件,因为我们要用到std::transform函数来转换字符串:

#include <algorithm>

2. 转换输入为小写

在读取玩家输入的choice之后,立即将整个字符串转换为小写。修改.cpp文件中的输入处理部分:

std::cout << std::endl << "Choice: ";
std::cin >> choice;
// 将输入字符串统一转为小写,避免大小写判定问题
std::transform(choice.begin(), choice.end(), choice.begin(),
    [](unsigned char c) { return std::tolower(c); });

if (dLookAround) {
    std::cout << "ede" << std::endl; // Just a test
}

这里用lambda表达式遍历字符串的每个字符,调用std::tolower转换为小写。用unsigned char是为了避免char为有符号类型时,某些特殊字符值导致的未定义行为。

3. 更新判定宏为小写形式

因为现在输入已经被统一转为小写,所以需要把头文件中的dLookAround宏里的所有选项改成小写:

private: std::string choice;
#define dLookAround \
(choice == "look around"\
 || choice == "what do i see?"\
 || choice == "what do i see"\
 || choice == "explore"\
 || choice == "scout")

这样修改之后,不管玩家输入Look Around、LOOK AROUND还是look around,都会被转换为小写的look around,完美匹配宏里的判定条件,彻底解决大小写输入错误影响判定的问题!

内容的提问来源于stack exchange,提问作者Wilicious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:51:17