为何我的C++代码中if/else if语句失效且to_lowercase不生效?
问题分析与修复
核心问题说明
- 自定义消息无法触发:
to_lowercase(name)会将输入姓名转为全小写,但你却和首字母大写的"Tim"/"John"做相等判断,永远无法匹配成功。 - 姓名未转为小写输出:你仅调用了
to_lowercase(name)但未将返回值保存到变量,也没有输出转换后的结果,自然看不到小写效果。
修复后的test_user_details函数代码
void test_user_details() { string name; string line; int age; name = read_string("What is your name: "); // 将姓名转为小写并保存 string lower_name = to_lowercase(name); // 直接用read_integer简化年龄读取逻辑 age = read_integer("What is your age: "); // 输出转换后的小写姓名 write_line("Hello, " + lower_name); // 和小写字符串做匹配判断 if (lower_name == "tim") { write_line("\nWelcome Tim, creator of this program"); } else if (lower_name == "john") { write_line("\nWelcome John, tester of this program"); } else { write_line("Are you Tim or John?"); } write("Age: "); write_line(age); }
额外优化点
- 复用已实现的
read_integer函数读取年龄,避免重复写字符串转整数的逻辑,让代码更简洁。 - 提前将姓名转换为小写并存储,后续统一使用该变量,避免重复调用
to_lowercase函数。
内容的提问来源于stack exchange,提问作者user4567
相关产品推荐
相关产品推荐

