C++技术实现:开发检测字符串是否以输入字符开头的控制台程序
如何用C++实现检测单词是否以指定字母开头的控制台程序?
嘿,这个需求其实挺容易实现的,我来给你捋清楚步骤,再附上完整的代码示例~
核心思路拆解
咱们要做的就是:
- 从控制台获取用户输入的单个字母和一个单词
- 检查单词的第一个字符是否和输入的字母匹配(可选是否忽略大小写)
- 输出判断结果
基础实现(区分大小写)
先来看最直接的版本,严格区分大小写(比如输入A和apple会判定不匹配):
#include <iostream> #include <string> int main() { char targetChar; std::string word; // 获取用户输入的字母 std::cout << "请输入一个字母: "; std::cin >> targetChar; // 获取用户输入的单词 std::cout << "请输入一个单词: "; std::cin >> word; // 处理空单词的边界情况 if (word.empty()) { std::cout << "你输入的是空单词哦!" << std::endl; return 1; } // 核心判断逻辑 if (word[0] == targetChar) { std::cout << "这个单词是以输入的字母开头的!" << std::endl; } else { std::cout << "这个单词不是以输入的字母开头的。" << std::endl; } return 0; }
关键细节说明
- 用
std::cin获取输入时,它会自动跳过空格、换行符这些空白字符,刚好符合我们获取单个字母和无空格单词的需求 - 一定要先判断
word.empty(),避免用户输入空字符串时访问word[0]导致程序崩溃 std::string的[0]可以直接访问字符串的第一个字符,非常方便
扩展:忽略大小写的版本
如果需要忽略大小写(比如输入A和apple也判定匹配),我们可以用<cctype>头文件里的tolower()函数,把两个字符都转成小写再比较:
#include <iostream> #include <string> #include <cctype> // 包含tolower函数 int main() { char targetChar; std::string word; std::cout << "请输入一个字母: "; std::cin >> targetChar; std::cout << "请输入一个单词: "; std::cin >> word; if (word.empty()) { std::cout << "你输入的是空单词哦!" << std::endl; return 1; } // 转成小写后比较,注意转成unsigned char避免未定义行为 char lowerTarget = tolower(static_cast<unsigned char>(targetChar)); char lowerFirstChar = tolower(static_cast<unsigned char>(word[0])); if (lowerFirstChar == lowerTarget) { std::cout << "这个单词是以输入的字母开头的(忽略大小写)!" << std::endl; } else { std::cout << "这个单词不是以输入的字母开头的(忽略大小写)。" << std::endl; } return 0; }
这里把char转成unsigned char是因为如果你的系统里char是有符号类型,当输入字符的ASCII值大于127时,tolower()会出现未定义行为,转成无符号类型就能避免这个问题啦。
内容的提问来源于stack exchange,提问作者Leon Bagarić
相关产品推荐
相关产品推荐

