【问题标题】:casting size_t to int to declare size of char array将 size_t 转换为 int 以声明 char 数组的大小
【发布时间】:2010-06-14 20:50:46
【问题描述】:

我正在尝试声明 char 数组的大小,我需要使用声明为 size_t 的变量的值来声明该大小。无论如何我可以将 size_t 变量转换为 int 以便我可以做到这一点?

【问题讨论】:

  • size_t 用于数组大小的类型。不仅您不需要演员阵容,而且如果您这样做,结果将被隐式转换回size_t

标签: c++ casting int size-t


【解决方案1】:

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);

【讨论】:

  • 次要细节,但是当您使用 new [] 时,您不应该在示例中使用 delete [] 吗?
  • @Jacob:是的,这是使用std::vector 的另一个绝佳理由。 :-)(已修复并感谢)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    相关资源
    最近更新 更多