如何在 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;
我需要制作一个二维数组,但问题是我需要使用字符串大小作为数组的大小。到目前为止,我这样做了,但我一直收到错误 "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;