ZBLOG

Runtime Error 1.74ms 7028KiB foo.cc: In function 'int main()': foo.cc:16:16: warning: array subscript has type 'char' [-Wchar-subscripts] 16 | if(cnt[c]==0){ | ^ foo.cc:19:13: warning: array subscript has type 'char...

根据你提供的错误信息和警告,我们可以做以下几点修改来解决这些问题:

  1. 数组下标类型:在 C++ 中,cnt 数组的索引需要是一个整数(通常是 int),而不是字符 char。因为字符的 ASCII 值可能超出数组边界,因此你应该使用 static_cast<int>(c) 来进行类型转换。

  2. 未使用的变量:如果你的代码中没有用到变量 m,那么可以将其删除以避免编译器发出未使用变量的警告。

  3. 字符串越界:根据错误信息中的“__pos (which is 14) > this->size() (which is 13)”,这表明在某处调用了一个超出字符串长度的方法,例如 substr()。请确保访问字符串时不会越界。

修正后的代码示例

以下是修正后的代码示例:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s = "your_string_here"; // 代入你的字符串s
    string t = "your_substring_here"; // 代入你的子字符串t

    int cnt[128] = {0};
    int n = s.size();
    // 删除 m,因为没有使用
    int less = 0;

    for (char c : t) {
        if (cnt[static_cast<int>(c)] == 0) { // 使用 static_cast<int> 来转换类型
            less++;
        }
        cnt[static_cast<int>(c)]++; // 使用 static_cast<int> 来转换类型
    }

    // 在这里实现其他逻辑,比如滑动窗口或其他处理

    return 0;
}

注意事项

  • 确保给定的字符串 st 实际上是有效的,不会导致任何下标越界。
  • 如果你在后续逻辑中仍然遇到类似的越界错误,请检查所有对字符串、数组或容器访问的位置,以确保没有超出它们各自的大小范围。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=7880

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?