不用 for (char c : votes_str) {
时间: 2024-09-22 10:04:40 浏览: 25
c_str()的用法详细解析
如果你不想使用C++11引入的范围-based for循环 `for (char c : votes_str)`, 你可以改用传统的迭代方式,通过索引来遍历输入的字符串。以下是不使用range-based for的代码片段:
```cpp
std::string votes_str;
std::getline(std::cin, votes_str);
// 初始化字符串长度
size_t length = votes_str.length();
// 记录最大票数和获胜者
int max_votes = 0;
char winner;
// 从头到尾遍历字符串
for (size_t i = 0; i < length; ++i) {
char c = votes_str[i];
// 检查是否是有效字符或废票
if (c >= 'A' && c <= 'E' && c != '*') {
candidates[c - 'A'].votes++;
// 更新最大票数和获胜者
if (candidates[c - 'A'].votes > max_votes) {
max_votes = candidates[c - 'A'].votes;
winner = c;
}
}
}
// 结果判断和输出
if (max_votes == candidates[0].votes || max_votes > 30) {
std::cout << "Nobody";
} else {
std::cout << winner;
}
```
在这个版本中,我们通过`length`属性获取字符串长度,并使用`i`作为索引逐个访问每个字符。其它部分的逻辑保持不变。
阅读全文