Чем "cin >>" отличается от "cin.get"?ИЛИ Это не так? - PullRequest
0 голосов
/ 01 января 2019

Я кодировал программу для таблиц умножения ... И я использовал a=cin.get(); и cin>>a; для ввода значения.Я получил разные результаты с каждым.Код:

#include"pch.h"
#include<iostream>

using namespace std;

int main()

{

float a, b;

cout << "Enter the number:";
a = cin.get();
cout << "The Table for the given number is:" << endl;
for (b = 1; b <= 10; ++b)
{
    cout << a << " * " << b << " = " << a * b << endl;
}

return 0;
}

А другой:

#include"pch.h"
#include<iostream>

using namespace std; 

int main()

{  

float a, b;

cout << "Enter the number:";
cin >> a;
cout << "The Table for the given number is:" << endl;
for (b = 1; b <= 10; ++b)
{
    cout << a << " * " << b << " = " << a * b << endl;
}

return 0;
}

Тот, у которого cin>>a; работал нормально.Однажды я прочитал, что cin.get() также используется для получения значения переменной.У этого есть какое-то другое использование вместо этого?

Спасибо,

1 Ответ

0 голосов
/ 01 января 2019

Как и многие новички, вы немного озадачены типами .cin >> a будет читать из cin в переменную a независимо от типа a, поэтому float, int, std::string и т. Д. Все работают с >>.Это упрощение, но на данный момент достаточно близко.

a = cin.get() предназначено только для чтения отдельных символов, возвращает следующий символ на входе.В вашей первой программе происходит то, что значение char из get() преобразуется в значение с плавающей запятой.Пропуск деталей, но это не то, что имеет большой смысл, поэтому вы получаете странные результаты.

Другое различие между >> и get() состоит в том, что >> пропускает пробел, но get() не будет.Поэтому, если вы хотите прочитать один символ независимо от того, является ли это пробелом или нет, используйте get(), в противном случае используйте >>.

...