C++ Kickstart 2020 RoundG问题—运行时错误

C++ Kickstart 2020 RoundG问题—运行时错误,c++,runtime-error,C++,Runtime Error,我试图解决去年G轮的“启动”问题。简言之,您需要计算子字符串“KICK…START”的出现次数,在两个单词之间有任意数量的字符。输入是一个只有大写字母的字符串 我写了一些代码,示例运行良好。但是在发送代码之后,我在第一个测试用例中得到一个运行时错误。我尝试过许多不同的方法,比如从string或substring使用at()函数,但都没有解决这个问题。你知道问题出在哪里吗 因此,获取错误的函数如下所示: long long fragment_count = 0; long long

我试图解决去年G轮的“启动”问题。简言之,您需要计算子字符串“KICK…START”的出现次数,在两个单词之间有任意数量的字符。输入是一个只有大写字母的字符串

我写了一些代码,示例运行良好。但是在发送代码之后,我在第一个测试用例中得到一个运行时错误。我尝试过许多不同的方法,比如从string或substring使用at()函数,但都没有解决这个问题。你知道问题出在哪里吗

因此,获取错误的函数如下所示:

    long long fragment_count = 0;
    long long open_count = 0;

    string text;
    cin >> text;

    for (int i = 0; i < text.size() - 4; ++i) {
        if (text[i] == 'K') {
            if (text[i + 1] == 'I' && text[i + 2] == 'C' && text[i + 3] == 'K') {
                open_count++;
            }
        } else if (text[i] == 'S') {
            if (text[i + 1] == 'T' && text[i + 2] == 'A' && text[i + 3] == 'R' && text[i + 4] == 'T') {
                fragment_count += open_count;
            }
        }
    }

    cout << fragment_count << "\n";
然后我用cin读取一个数字,它表示测试用例,并为每个测试用例调用上面的函数。

text.size()
的类型是
std::size\u t
,它是一种无符号类型。如果文本长度小于4,
text.size()


将比较替换为
i+4

谢谢,这就是问题所在。我花了太多时间试图解决这个问题。
ios::sync_with_stdio(0);
cin.tie(0);