что не B принимает 8 в качестве ввода? C ++ - PullRequest
1 голос
/ 27 января 2020

В следующем коде вводом является 9/ 8, так почему же B не принимает 8 в качестве ввода?

#include <iostream>
using namespace std;

int main(){
    int A, B;
    cin >> A >> B;
}

Ответы [ 2 ]

2 голосов
/ 27 января 2020

на входе 9/8, почему B не принимает 8 в качестве ввода?

Поскольку "/ 8" не является числом.

0 голосов
/ 27 января 2020

operator>> прекращает чтение, когда встречает символ, который не вписывается в тип данных для чтения.

В этом случае ваш первый вызов operator>> читает в int A, поэтому он читает символ '9', а затем прекращает чтение, когда встречает не-ди git '/' символ. Символ '/' остается во входном потоке.

Затем ваш второй вызов operator>> пытается прочитать в int B, но вместо символа '8' он читает символ '/', поэтому чтение завершается неудачно, поскольку '/' не является ди git.

Вам необходимо игнорировать '/', чтобы прочитать символ '8', например:

#include <iostream>
using namespace std;

int main(){
    int A, B;
    char ignore;
    cin >> A >> ignore >> B;
}

Или:

#include <iostream>
#include <iomanip>
using namespace std;

int main(){
    int A, B;
    cin >> A >> ws;
    cin.ignore();
    cin >> B;
}
...