大小的char数组来自user - cpp

时间:2017-10-25 05:33:51

标签: c++ arrays

我想创建一个字符数组(char path [size] =“”),同时从用户那里获得“大小”。

当我尝试这样的事情时:

int size = getSizeFromUser();

char path[size] = "";

我收到警告说“表达式必须具有恒定值”。

我该怎么做?

非常感谢!

4 个答案:

答案 0 :(得分:2)

为了创建一个具有用户大小的表,你必须在堆上分配你的内存

int size = 4;
char *path = new char[size];

使用数组后,必须手动将其从堆中删除     删除路径;

答案 1 :(得分:2)

  

我该怎么做?

可变长度数组不是标准的c ++。正确的方法是使用std::vectorstd::string而不是原始数组:

int size = getSizeFromUser();

std::string path(size,'\0');

答案 2 :(得分:1)

如果声明char path[size];,则必须在编译时知道大小。您在运行时阅读它,因此您需要使用动态内存分配,例如char* path = new char[size];和完成调用delete []path;

如果您希望这是一个size个可见字符的字符串,请考虑C字符串以空值终止,这意味着您必须在结尾处预留一个额外的char。数组并将其设置为0

更好的C ++程序解决方案可能是使用std::string而不是char*

答案 3 :(得分:1)

创建数组时,其大小必须保持不变。

如果你想要一个动态大小的数组,你必须为它分配内存,并且当你完成它时你也需要释放它。

简单地说,使用std::string

就可以了