我试图声明一个char数组的大小,我需要使用声明为size_t的变量的值来声明该大小。无论如何,我可以将size_t变量强制转换为int,以便我可以这样做吗?
答案 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::vector
(std::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"