2010-06-14 452 views
4

我想声明一个char数组的大小,并且我需要使用声明为size_t的变量的值来声明该大小。无论如何,我可以将size_t变量转换为int类型,以便我可以这样做?将size_t转换为int来声明char数组的大小

+1

'size_t' _is_是用于数组大小的类型。不仅你不需要演员,而且如果你做了演员,结果只会被隐式转换回'size_t'。 – 2010-06-14 21:01:34

回答

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管理的内存给你,让你不“T需要记住直接删除它,你不必担心许多附带手动动态分配的归属问题):

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

小细节,但是当你使用new []时,你不应该在你的例子中使用delete []? – Jacob 2010-06-14 21:05:43

+3

@Jacob:是的,这是使用'std :: vector'的另一个很好的理由。 :-)(修正并感谢) – 2010-06-14 21:06:29