2016-07-05 3 views
0

Я провел довольно немного исследований о том, как установить размер массивов с использованием переменной типа данных int, но не смог найти ничего полезного.Установить размер char [] через переменную int

Так вот пример того, что я пробовал, в котором дает мне ошибку говоря "expression must have a const value"

char * charptr = "test"; 
int sze = strlen(charptr); 
char str[sze]; 

Извините, если этот вопрос идиотский, я еще совсем новичок в c++

Любой помощь будет оценена, хотя!

+2

Отличным выбором было бы использовать 'std.: String' вместо массива' char'. –

+2

Если вы новичок в C++, вы не должны использовать указатели. Указатели - это экспертный инструмент низкого уровня, в основном для оптимизации реализаций и для операций низкого уровня, и они не должны быть необходимы, чтобы просто что-то работать. –

+0

Вы не можете сделать это в стандартном C++, но некоторые компиляторы C++ имеют расширения, которые позволяют вам это делать. Учитывая, что у нас есть стандартные контейнеры C++, это не очень интересная функция. – molbdnilo

ответ

2

sze не известен на время компиляции; C++ делает не поддержка массивы переменной длины поэтому char str[sze]; недопустим C++.

Один обходной путь будет использовать char* str = new char[sze];, но это может вызвать проблемы, так как вы должны баланс это с последующей delete[] str; иначе вы утечка памяти.

Лучше использовать встроенный класс строк std::string, если можно.

2

Вы должны использовать динамическое распределение.

int size = 1337; 
char *str = new char[size]; 

Посредством этого программа будет выделять память в кучу во время выполнения.

Вы не можете сделать char str[size], потому что size не известно во время компиляции, а затем компилятор не знает, сколько места ему нужно выделить в стеке.

Конечно, не забудьте сделать delete [] str после его использования.

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