C++ 使用c+;中输入字符串的长度初始化int数组+;
我收到这些错误 1.无法分配大小为常量0的数组 2.期望常数表达式 3. '数字:未知大小C++ 使用c+;中输入字符串的长度初始化int数组+;,c++,arrays,C++,Arrays,我收到这些错误 1.无法分配大小为常量0的数组 2.期望常数表达式 3. '数字:未知大小 #include <iostream> #include <string> using namespace std; int main() { string str; int input_num; int sum; cout << "Enter the number:" << endl; getline(cin, str); const int leng
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
int input_num;
int sum;
cout << "Enter the number:" << endl;
getline(cin, str);
const int length = str.length();
cout << "Length:" << length<<endl;
//input_num = stoi(str);
int numbers[length];
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
字符串str;
int输入_num;
整数和;
cout将数组的使用替换为std::vector
,并将元素初始化为0
std::vector<int> numbers(length, 0);
std::向量数(长度,0);
数组的大小必须是大于0的常量表达式
您应该使用标准类std::vector
比如说
#include <vector>
//...
std::vector<int> numbers( length );
不能声明在编译时大小未知的堆栈分配数组(没有编译器扩展名)不幸的是,该副本没有提到你应该只使用std::vector
,因为它在标题中被明确禁止。正如任何其他人来到这里寻找与我4年后相同的东西一样,向量的答案正是我所需要的,并承认这个问题有它的问题按照人们的提问方式,它没有理由一直被否决。我很感激这个问题和答案。这是我需要的,也是实现它的目的所需要的道具。
#include <limits>
//...
int numbers[std::limits<int>::digits10 + 1];