2010-06-14 3 views
4

Я пытаюсь объявить размер массива символов, и мне нужно использовать значение переменной, объявленной как size_t, чтобы объявить этот размер. Есть ли в любом случае, я могу применить переменную size_t к int, чтобы я мог это сделать?casting size_t to int объявить размер массива char

+1

'size_t' _is_ тип, используемый для размера массива. Мало того, что вам не нужен бросок, но если вы это сделаете, результат будет просто неявно преобразован обратно в 'size_t'. –

ответ

7

size_t - целочисленный тип, и никакой приведение не требуется.

В C++, если вы хотите иметь динамически размером массив, вам нужно использовать динамическое распределение с помощью new. То есть, вы не можете использовать:

std::size_t sz = 42; 
char carray[sz]; 

Вы должны использовать вместо следующих:

std::size_t sz = 42; 
char* carray = new char[sz]; 
// ... and later, when you are done with the array... 
delete[] carray; 

или, предпочтительно, вы можете использовать std::vector (std::vector управляет памятью для вас, чтобы вы не «т нужно помнить, чтобы удалить его в явном виде и вам не придется беспокоиться о многих проблемах собственности, которые приходят с ручным динамическим распределением):

std::size_t sz = 42; 
std::vector<char> cvector(sz); 
+1

Незначительная деталь, но разве вы не должны использовать delete [] в своем примере, когда используете новый []? – Jacob

+3

@Jacob: Да, и это еще одна отличная причина для использования 'std :: vector'. :-) (Исправлено и спасибо) –