如何在c ++中为2D数组大小分配非重要值?

时间:2016-01-22 15:25:56

标签: arrays dynamic-allocation

我需要制作一个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]; 

1 个答案:

答案 0 :(得分:0)

这个怎么样?

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;