2016-01-22 5 views
0

Мне нужно сделать 2D-массив, но проблема в том, что мне нужно использовать размер строки как размер массива. До сих пор я это делал, но я продолжаю получать ошибку "выражение должно иметь постоянное значение". Моя программа должна прочитать строку из txt-файла, а затем использовать длину строки/размер для размера 2D-массива. Например: я написал «привет» в txt-файле и его длина равна 5. Теперь мне нужно использовать эту длину и сохранить ее как переменную N и использовать ее как измерение для 2D-массива. Как это сделать, ребята для этого примера?Как назначить ненулевое значение размеру 2D-массива в C++?

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]; 
+0

Какое сообщение об ошибке? – Phorce

+0

Ошибка \t C2540 \t непостоянное выражение как связанное с массивом – darius

+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; 
+0

Спасибо большое, человек сейчас работает: D – darius

Смежные вопросы