C++简易菜单程序:用户输入字符串中间字符获取功能实现问题
问题原因
你现有代码中选项1的逻辑存在两处核心错误:
- 混淆了「判断字符串长度奇偶」和「计算中间字符下标」的执行顺序,你当前写的
usrinput.length() /2 % 2是先算长度除以2再判断奇偶,完全不符合需求 - 两个分支的判断条件逻辑重叠且错误,无法正确对应奇偶长度的判断场景
正确实现
你只需要把选项1的代码替换为如下内容即可:
if (selection == 1) { cout << "中间字符: " << endl; cout << "=======" << endl; int len = usrinput.length(); if (len % 2 == 1) { // 奇数长度,整数除法得到的len/2刚好是中间字符的下标 cout << usrinput[len / 2] << endl; } else { // 偶数长度,直接提示 cout << "不存在中间字符" << endl; } }
额外注意点
如果你的程序后续要支持用户多次输入新字符串,要注意cin >> selection执行后会在输入缓冲区留下换行符,后续调用getline会直接读到空字符串,需要手动清空缓冲区处理。
内容的提问来源于stack exchange,提问作者mudd
相关产品推荐
相关产品推荐

