приведение size_t к int для объявления размера массива char - PullRequest
4 голосов
/ 15 июня 2010

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

Ответы [ 2 ]

7 голосов
/ 15 июня 2010

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);
0 голосов
/ 15 июня 2010

Для получения дополнительной информации о size_t я настоятельно рекомендую статьи Дана Сакса: "Почему size_t имеет значение" и "Дальнейшее понимание size_t"

...