【发布时间】:2010-06-14 20:50:46
【问题描述】:
我正在尝试声明 char 数组的大小,我需要使用声明为 size_t 的变量的值来声明该大小。无论如何我可以将 size_t 变量转换为 int 以便我可以做到这一点?
【问题讨论】:
-
size_t是用于数组大小的类型。不仅您不需要演员阵容,而且如果您这样做,结果将被隐式转换回size_t。
我正在尝试声明 char 数组的大小,我需要使用声明为 size_t 的变量的值来声明该大小。无论如何我可以将 size_t 变量转换为 int 以便我可以做到这一点?
【问题讨论】:
size_t 是用于数组大小的类型。不仅您不需要演员阵容,而且如果您这样做,结果将被隐式转换回size_t。
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);
【讨论】:
std::vector 的另一个绝佳理由。 :-)(已修复并感谢)
有关 size_t 的更多背景信息,我强烈推荐 Dan Saks 文章: "Why size_t matters" 和 "Further insights into size_t"
【讨论】: