【问题标题】:Set size of char[] via int variable通过 int 变量设置 char[] 的大小
【发布时间】:2016-07-05 08:37:11
【问题描述】:

我已经对如何使用数据类型为 int 的变量设置数组大小进行了大量研究,但找不到任何有用的东西。

所以这是我尝试过的一个例子,它给了我一个错误,说"expression must have a const value"

char * charptr = "test";
int sze = strlen(charptr);
char str[sze];

对不起,如果这个问题是愚蠢的,我对c++还是很陌生

任何帮助将不胜感激!

【问题讨论】:

  • 一个很好的选择是使用std.:string而不是char数组。
  • 如果你是 C++ 新手,你不应该使用指针。指针是一种低级专家工具,主要用于优化实现和低级操作,它们不应该只是让某些东西正常工作所必需的。
  • 您不能在标准 C++ 中做到这一点,但一些 C++ 编译器具有允许您这样做的扩展。鉴于我们有 C++ 标准容器,这不是一个非常有趣的功能。
  • @KerrekSB 我没有在 Windows 或类似的东西上编写我的 c++“程序”,我无法使用 string.h。

标签: c++ arrays char


【解决方案1】:

sze编译时是未知的; C++支持可变长度数组所以char str[sze];不是有效的C++。

一种解决方法是使用char* str = new char[sze];,但这可能会给您带来问题,因为您必须将此与后续的delete[] str; 平衡,否则您会泄漏内存。

如果可以的话,最好使用内置的字符串类std::string

【讨论】:

    【解决方案2】:

    你必须使用动态分配。

    int size = 1337;
    char *str = new char[size];
    

    通过这样做,程序将在运行时在堆上分配内存。

    你不能做char str[size],因为size在编译时是未知的,然后编译器不知道它必须在堆栈上分配多少空间。

    当然记得用完delete [] str

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-26
      • 2010-09-29
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2011-12-07
      相关资源
      最近更新 更多