为什么这段代码给我 "expected unqualified-id" 错误

why is this code giving me "expected unqualified-id" error

这是创意link: https://ideone.com/0fqnCG

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

int main()
{
    string cases[8] = {"TTT", "TTH", "THT", "THH", "HTT", "HTH", "HHT", "HHH"};
    int p, j, i;
    cin >> p;
    int sets[p];
    string toss[p];
    string new;
    for (i = 0; i < p; i++)
    {
        cin >> sets[i];
        cin >> toss[i];
    }
    for (i = 0; i < p; ++i)
    {
        int case1 = 0, case2 = 0, case3 = 0, case4 = 0, case5 = 0, case6 = 0, case7 = 0, case8 = 0;
        new = toss[i];
        cout << sets[i];
        for (j = 0; j < 38; ++j)
        {
            if (new[i] + new[i + 1] + new[i + 2] == cases[0]) {case1++;}
            if (new[i] + new[i + 1] + new[i + 2] == cases[1]) {case2++;}
            if (new[i] + new[i + 1] + new[i + 2] == cases[2]) {case3++;}
            if (new[i] + new[i + 1] + new[i + 2] == cases[3]) {case4++;}
            if (new[i] + new[i + 1] + new[i + 2] == cases[4]) {case5++;}
            if (new[i] + new[i + 1] + new[i + 2] == cases[5]) {case6++;}
            if (new[i] + new[i + 1] + new[i + 2] == cases[6]) {case7++;}
            if (new[i] + new[i + 1] + new[i + 2] == cases[7]) {case8++;}
        }
        cout << case1 << " " << case2 << " " << case3 << " " << case4 << " " << case5 << " " << case6 << " " << case7 << " " << case8 << " ";

    }

    return 0;
}

注意:这是 uva 上的一个问题的解决方案,这里是问题的 link:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2874

如果您使用的是 c++ 编译器(显然您是!),new 是保留字,不能用作变量标识符。

使用关键字作为变量

您的程序中存在各种错误: new 是保留关键字,不能用于命名变量。原因是它不会被视为变量,而是具有所有功能的关键字。请尝试 new1(或保留关键字以外的任何名称)。

字符串和字符比较,连接:

(new[i] + new[i + 1] + new[i + 2] == cases[0])

这里new[i],(改成(new1[i])是一个字符,cases[0]是一个字符串。另外,这样加字符不会concatenate 它们,但会根据它们的 ascii 值相加生成另一个字符。
相反,试试这个:

if ((new[i] == cases[0][0] && (new[i+1] == cases[0][1]) && (new[i+2] == cases[0][2])) 
{case1++;}

Here is the modified code