#include<iostream>;
int main()
{
int a = 1;
int b = 2;
std::cin >> a >> b;
std::cout << a << "+" << b << "=" << a+b << std::endl;
return 0;
}
when I enter 3 4 as input,the output will be 3+4=7,well,it's strange;
But when I enter a b,the output is 0+0=0(Why it is 0 and 0?);
The most confusing,a 4,it will be 0+0=0(Why not '0+4=4'?????);
Then i write another prog.
#include<iostream>;
int main()
{
int a = 1;
int b = 2;
std::cin >> a;
std::cin.clear();
std::cin >> b;
std::cout << a << "+" << b << "=" << a+b << std::endl;
return 0;
}
When i enter a 4,why is it still 0+0=0?Shouldn't it be 0+4=4?
Thanks to all the warm-hearted!!
I write prog3,to test what will happen when i don't write int a=1;int b=2;
2
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin >> a ;
cin >> b;
cout<< a << "+"<< b <<"="<< a+b << endl;
return 0;
}
When a bagain,it outputs 0+-1218170892=-1218170892(Why isn't 0+0=0??)
The c++ cin statement is an instance of the class iostream and is used to read data from a standard input device, which is usually a keyboard. For reading inputs, the extraction operator(>>) is combined with the object cin.
The cin. clear() clears the error flag on cin (so that future I/O operations will work correctly), and then cin. ignore(10000, '\n') skips to the next newline (to ignore anything else on the same line as the non-number so that it does not cause another parse failure).
The thing to do is to clear that flag and discard the bad input from the input buffer. See the C++ FAQ for this, and other examples, including adding a minimum and/or maximum into the condition.
Every time you read from cin to a variable, the old contents of that variable is overwritten.
Like all istreams, std::cin has error bits. These bits are set when errors occur. For example, you can find the values of the error bits with functions like good(), bad(), eof(), etc. If you read bad input (fail() returns true), use clear() to clear the flags. You will also likely need an ignore(1); to remove the offending character.
See the State functions section for more information. http://en.cppreference.com/w/cpp/io/basic_ios
The value is set to zero on an error as per C++11: If extraction fails, zero is written to value and failbit is set.
On the 'a 4' example, both values are 0 because the buffer has not been flush/cleared, so the second cin read is still reading the error, and also receives a value of 0.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With