C++中如何统计字符串数组元素的字符数量?
在C++中实现字符串长度判断与输入限制
首先,你的代码存在几处需要修正的问题,同时可以直接用C++标准库的方法实现字符串长度判断:
1. 核心方法:获取字符串长度
C++的std::string类提供了两个成员方法可直接获取字符数量:
size():返回字符串中字符的个数length():和size()功能完全一致,是为兼容早期代码保留的方法
所以你需要的判断逻辑可以直接写成:if (heard[i].size() > 100)
2. 修正原代码的其他问题
原代码还有几处不符合C++标准的地方:
- C++标准不支持
std::string[count]这种变长数组(部分编译器如GCC支持扩展,但不推荐),建议用std::vector<std::string>动态存储字符串 cout未加std::前缀,会导致编译错误- 原代码输入过长时仅提示,但没有让用户重新输入的逻辑,需要调整循环结构
修正后的完整代码
#include <iostream> #include <string> #include <vector> // 引入vector头文件 int main () { int count; std::cout << "How many things do you hear? "; std::cin >> count; // 用vector替代变长数组,符合C++标准 std::vector<std::string> heard(count); for (int i = 0; i < count; ) // 这里去掉i++,输入错误时不递增索引 { std::cout << "Enter what you hear: "; std::cin >> heard[i]; if (heard[i].size() > 100) { std::cout << "Too many letters try again: "; } else { i++; // 输入合法时再移动到下一个元素 } } // 可选:验证输入结果 std::cout << "\nYou entered:\n"; for (const auto& s : heard) { std::cout << s << " (length: " << s.size() << ")\n"; } return 0; }
说明
- 使用
std::vector<std::string>可安全地动态创建指定数量的字符串对象,兼容所有标准C++编译器 heard[i].size()直接返回当前字符串的字符数,判断是否超过100非常直观- 调整循环逻辑后,当用户输入过长时,会停留在当前索引位置,直到输入符合要求为止
内容的提问来源于stack exchange,提问作者FinlayMc001
相关产品推荐
相关产品推荐

