使用变量设置数组长度
我正在扫描系统上编辑非常长的字符串。对于扫描,我使用一个字符串来包含正在检查的当前字母。我需要将char[]
数组的长度设置为string
变量的长度,但我的长度变量不被视为常量,即使它被声明为const
。使用变量设置数组长度
string inputScan;
cout << "Enter string." << endl;
getline(cin, inputScan);
const int stringLength = inputScan.length();
char scanSet[stringLength];
任何修复?
定长阵列尺寸需要在编译时指定,因此编译器可以为它们分配空间(在堆栈上或任何地方)。因此,你的方法无法工作。
使用C++标准,如std::vector
,你将没有问题。
我会放在“堆栈”上,因为你不需要说出来,尽管不太可能,但可能没有堆栈。 – user4581301
另外,它们可能会静态分配。 –
或者,用'std :: string scanSet'替换'char scanSet []',或者直接删除'scanSet'并直接扫描'inputScan'。 –
使用'std :: vector'。 – user4581301
这不是一个编译时常量,这是维数组所需要的。另外,如果您已经阅读过字符串,为什么还需要另一个数组? –
它需要是一个编译时常量。尝试使用std :: string来代替:http://en.cppreference.com/w/cpp/string/basic_string –