Arrays 如何在c+中为2D数组大小指定非consuant值+;?

Arrays 如何在c+中为2D数组大小指定非consuant值+;?,arrays,dynamic-allocation,Arrays,Dynamic Allocation,我需要制作一个2D数组,但问题是我需要使用字符串大小作为数组的大小。到目前为止,我这样做了,但我不断得到错误“表达式必须有一个常量值”。我的程序需要从txt文件中读取字符串,然后使用字符串长度/大小作为2D数组大小。例如:我在txt文件中写了“hello”,它的长度是5。现在我需要使用这个长度并将其存储为变量N,并将其用作2D数组的维度。 对于这个例子,如何做呢 int main() { string s; ifstream myfile("palindrome.txt", i

我需要制作一个2D数组,但问题是我需要使用字符串大小作为数组的大小。到目前为止,我这样做了,但我不断得到错误“表达式必须有一个常量值”。我的程序需要从txt文件中读取字符串,然后使用字符串长度/大小作为2D数组大小。例如:我在txt文件中写了“hello”,它的长度是5。现在我需要使用这个长度并将其存储为变量N,并将其用作2D数组的维度。 对于这个例子,如何做呢

 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];   
}
const int N=l;
整数**R=新整数*[2];
对于(int i=0;(i<2);i++)
{
R[i]=新整数[N+1];
}
循环两次,因为这是您在第一次初始化中将行设置为的内容。您需要在堆上分配其内存,但请记住,一旦完成,您将需要释放此内存。这可以通过以下方式实现:

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

错误消息是什么?错误C2540非常量表达式作为数组边界如果要为具有一个新数组的数组分配内存,则第二个大小必须为常量。在您的例子中,我认为您应该声明一个字符串数组(或向量)。