You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中text[i+j]索引相加逻辑及嵌套循环功能疑问

C++屏蔽单词项目中嵌套循环索引相加的逻辑解析

问题背景

刚完成Codecademy的一个C++项目,功能是实现输入短语中屏蔽指定单词的功能。查看示例解决方案时,对嵌套for循环里的text[i+j]逻辑感到困惑:为何要将两个索引相加?它的具体作用是什么?相关代码片段如下:

for (int i = 0; i < text.size(); ++i) {
        
    int match = 0;
        
    for (int j = 0; j < word.size(); ++j) {
    
      if (text[i+j] == word[j]) {
        
        ++match;
          
      }
    
    }

逻辑解析

  • 外层循环的i代表待检查文本text中当前匹配的起始位置,遍历text的每个字符作为可能的匹配起点。
  • 内层循环的j代表目标屏蔽词word中的字符索引,遍历word的每个字符用于逐位对比。
  • text[i+j]的作用是:从text的第i位起始位置开始,往后偏移j位,拿到对应位置的字符,和word的第j位字符做对比。这样就能逐字符验证:text中从i开始的连续一段字符,是否和word完全一致。

举个实际例子:假设text是"hello bad word",word是"bad"。当外层循环的i走到text中'b'的索引位置(假设是6),内层循环的j从0到2:

  • j=0时,text[6+0]就是'b',和word[0]的'b'匹配;
  • j=1时,text[6+1]就是'a',和word[1]的'a'匹配;
  • j=2时,text[6+2]就是'd',和word[2]的'd'匹配;
    此时match会等于word.size(),就说明找到需要屏蔽的单词,后续代码会执行替换屏蔽的操作。

内容的提问来源于stack exchange,提问作者Amy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:01:14