使用变量设置数组长度

问题描述:

我正在扫描系统上编辑非常长的字符串。对于扫描,我使用一个字符串来包含正在检查的当前字母。我需要将char[]数组的长度设置为string变量的长度,但我的长度变量不被视为常量,即使它被声明为const使用变量设置数组长度

string inputScan; 
cout << "Enter string." << endl; 
getline(cin, inputScan); 
const int stringLength = inputScan.length(); 
char scanSet[stringLength]; 

任何修复?

+2

使用'std :: vector'。 – user4581301

+4

这不是一个编译时常量,这是维数组所需要的。另外,如果您已经阅读过字符串,为什么还需要另一个数组? –

+0

它需要是一个编译时常量。尝试使用std :: string来代替:http://en.cppreference.com/w/cpp/string/basic_string –

定长阵列尺寸需要在编译时指定,因此编译器可以为它们分配空间(在堆栈上或任何地方)。因此,你的方法无法工作。

使用C++标准,如std::vector,你将没有问题。

+0

我会放在“堆栈”上,因为你不需要说出来,尽管不太可能,但可能没有堆栈。 – user4581301

+0

另外,它们可能会静态分配。 –

+1

或者,用'std :: string scanSet'替换'char scanSet []',或者直接删除'scanSet'并直接扫描'inputScan'。 –