2015-04-09 5 views
-5

я получаю эти ошибки 1. не может выделить массив постоянного размера 0 2. Ожидается постоянное выражение 3. «число»: неизвестный размерInitialize целочисленный массив с длиной входной строки в C++

#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; 

} 
+0

вы не можете объявить стек, выделенный массив, кто в данном размере не известен во время компиляции (без расширения компилятора) – CoryKramer

+0

к сожалению, дубликат не говоря уже о том, что вы должны просто использовать 'зОго :: вектор' beca используйте это явно запрещенное название. – chris

ответ

0

Замените использование массива на std::vector и инициализируйте элементы до 0.

std::vector<int> numbers(length, 0); 
0

Размер массива должен быть постоянным выражением больше 0.

Вы должны использовать стандартный класс std::vector<int> вместо этого.

Например

#include <vector> 

//... 

std::vector<int> numbers(length); 

Если пользователь должен ввести номер типа, например int (то есть число может быть в диапазоне допустимых значений объекта типа Int), то можно определить массив заранее следующим образом

#include <limits> 

//... 

int numbers[std::limits<int>::digits10 + 1]; 
Смежные вопросы