Как получить два целых числа через пробел в символе []? - PullRequest
1 голос
/ 10 сентября 2011

Я получу строку чисел, которая выглядит следующим образом.

12 45

Два целых числа, разделенные пробелом.

Вывод будет 57.

Iпытался использовать,

string numbersstream;
cin >> numbersstream;
istringstram twonumbers (numbersstream);
twonumbers >> a >> b;

Но каждый раз, когда я запускаю его, только a является правильным, b - нет.

Какие еще функции существуют, чтобы помочь мне?Или это просто проблема с кодированием у меня?

Я получил два вида предложений, уже в ответах.

getline(cin,numbersstream);

И

cin << a << b;

Спасибо всем заваше время.Дополнительные методы будут очень цениться.

Ответы [ 3 ]

4 голосов
/ 10 сентября 2011

Проблема с вашим вкладом от cin. Использование operator>> ограничено пробелами. Поэтому, если пользователь введет «12 45», будут извлечены только 12. Вместо этого вы можете использовать getline:

getline(cin,numbersstream);
1 голос
/ 10 сентября 2011

Вы читаете только до первого символа пробела с

cin >> numberstream;

Следующее будет считывать все в строку, пока не будет прочитан символ разделителя ('\ n') или конец файла. Разделитель отбрасывается.

getline(cin,numbersstream);
1 голос
/ 10 сентября 2011

Попробуйте это:

int main()
{
    int a;
    int b;

    std::cin >> a >> b;
    std::cout << a+b << "\n";
}

Проблема в том, что в вашем коде:

cin >> numbersstream;

В строку numbersstream читает только одно слово, разделенное пробелом (т.е. 12). Таким образом, когда вы строите twonumbers, на самом деле в нем только один номер. Следовательно, он устанавливает только «a», а «b» остается неопределенным.

Вы можете сделать это по-своему, но здесь вам действительно нужно прочитать всю строку в строку:

std::getline(std::cin, numbersstream);
istringstram twonumbers (numbersstream);
...