C++句子计数函数计算结果错误,寻求问题排查建议
问题分析与修复方案
你的函数存在三个关键问题,导致统计结果不符合预期:
- 未定义变量
txtLength:循环的终止条件应该使用输入字符串的实际长度,比如text.size()或text.length() - 错误使用
strcmp比较单个字符:strcmp是用来比较以'\0'结尾的C风格字符串的,而&text[i]指向的是单个字符,没有终止符,调用strcmp会导致未定义行为。单个字符直接用==判断即可 - 判断条件写错目标字符:把句子结束符
.写成了<,导致无法识别以.结尾的句子
修正后的代码如下:
int calc_sent(string text) { int numSent = 0; // 使用text.size()获取字符串长度 for(int i = 0; i < text.size(); i++) { // 直接比较单个字符,修正错误的判断符号 if (text[i] == '.' || text[i] == '?' || text[i] == '!') { numSent++; } } return numSent; }
测试你提供的文本"My name is John. His name is Jack! Her name is Jane?",这个修正后的函数会正确返回3。
内容的提问来源于stack exchange,提问作者user26601012
相关产品推荐
相关产品推荐

