如何在 C++ 中为二维数组大小分配非常量值?

How to assign non consant value to 2D array size in c++?

我需要制作一个二维数组,但问题是我需要使用字符串大小作为数组的大小。到目前为止,我这样做了,但我一直收到错误 "expression must have a constant value"。我的程序需要从 txt 文件中读取一个字符串,然后使用字符串 length/size 作为二维数组的大小。例如:我在 txt 文件中写了 "hello",它的长度是 5。现在我需要使用这个长度并将它存储为变量 N,并将它用作二维数组的维度。 伙计们,这个例子该怎么做?

 int main()
{
    string s;
    ifstream myfile("palindrome.txt", ios::out);        //reading my txt file

    if (myfile.is_open()) 
        {
            getline(myfile, s); //storing string in variable s
        }
    myfile.close();

    int l = s.size(); //reading size of string and storing to variable l
    const int N = l; 
    int* R= new int[2][N + 1]; 

这个呢?

const int N = l;

int** R = new int*[2];

for(int i = 0; (i < 2); i++)
{
    R[i] = new int[N + 1];   
}

循环两次,因为这是您在第一次初始化中设置的行。您需要在堆上分配它的内存,但请记住,完成后您需要释放该内存。这可以通过以下方式完成:

for(int i = 0; (i < 2); i++)
   delete[] R[i];
delete[] R;