将size_t转换为int以声明char数组的大小

时间:2010-06-14 20:50:47

标签: c++ casting int size-t

我试图声明一个char数组的大小,我需要使用声明为size_t的变量的值来声明该大小。无论如何,我可以将size_t变量强制转换为int,以便我可以这样做吗?

2 个答案:

答案 0 :(得分: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::vectorstd::vector为你管理内存,这样你就不需要记得明确地删除它,你不必担心很多手动动态分配带来的所有权问题:

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

答案 1 :(得分:0)

有关size_t的更多背景信息,我强烈推荐Dan Saks文章: "Why size_t matters""Further insights into size_t"