我想创建一个字符数组(char path [size] =“”),同时从用户那里获得“大小”。
当我尝试这样的事情时:
int size = getSizeFromUser();
char path[size] = "";
我收到警告说“表达式必须具有恒定值”。
我该怎么做?
非常感谢!
答案 0 :(得分:2)
为了创建一个具有用户大小的表,你必须在堆上分配你的内存
int size = 4;
char *path = new char[size];
使用数组后,必须手动将其从堆中删除 删除路径;
答案 1 :(得分:2)
我该怎么做?
可变长度数组不是标准的c ++。正确的方法是使用std::vector
或std::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)