2015-07-28 2 views
-2

У меня проблема: я хочу хранить значения из стандартной строки ввода в int, но я не уверен, как конвертировать к междунар:.Ошибка: невозможно преобразовать 'std :: string (aka std :: basic_string <char>}' to 'int' в присваивании

string line; 
int value; 
getline(cin,line); 
istringstream ss(line); 
while (ss>>line) { 
    if (ss.eof()==false) { 
     // stores non ints in strings 
    } 
    else { 
     value=line; //ERROR 
    } 
} 

Я попытался преобразовать это с помощью стандартной документации материал, но я не собираюсь никуда Что я делаю неправильно

+0

Просто выполняйте 'while (cin >> value)' как правило, то, что вы хотите. – Chad

ответ

0

Вы можете использовать std::stoi:

value=std::stoi(line); 
+0

Спасибо. Я пробовал это, и я получаю ошибку: «stoi» не является членом «std». Я включил правильные библиотеки, например. std :: stoi Так это не проблема библиотеки? – theBookeyMan

+0

@theBookeyMan Вы включили , используете ли вы C++ 11? – yizzlez

0

Вы можете использовать istringstream, чтобы попытаться загрузить значение в int при проверке на ss.fail().

ss >> temp; // where temp is an int 
if(ss.fail()) 
{ 
// handle the error because the value wasn't an int 
} 
else 
{ 
// process your int 
} 

Это, естественно, может быть немного изменено в зависимости от ваших потребностей.

+0

Там может быть более чистый способ сделать это, хотя ... – Tyler

Смежные вопросы