# leading zeros - wrong int

Discussion in 'C++' started by r.magdeburg, Dec 1, 2003.

1. ### r.magdeburgGuest

//and give me a hint to solve the problem with leading zeros.

//snippet
#include <iostream.h>
#include <conio.h>
int main()
{
int zahl = 0;
cout << "Give me an int please: ";
cin >> zahl;
cout << "int = " << zahl <<endl;
getch();
return 0;
}
//input 0045 screen output 37
//input 0049 output 4
// 094 0
//and so on
//thank you

r.magdeburg, Dec 1, 2003

2. ### Ron NatalieGuest

"r.magdeburg" <> wrote in message news:3fcb8c05\$0\$25763\$...
> //and give me a hint to solve the problem with leading zeros.
>

When basefield is not set "senses" the base by looking at the leading digits similar to the
way literal numbers works in the language. Leading zeros cause it to treat
the base as octal. You can fix it by forcing dec, cin >> dec >> zahl;

I'm pretty sure the basefield is supposed to be dec by default...I think it's a defect in your
compiler.

Ron Natalie, Dec 1, 2003

3. ### red floydGuest

r.magdeburg wrote:

> //and give me a hint to solve the problem with leading zeros.
>
> //snippet
> #include <iostream.h>
> #include <conio.h>
> int main()
> {
> int zahl = 0;
> cout << "Give me an int please: ";
> cin >> zahl;
> cout << "int = " << zahl <<endl;
> getch();
> return 0;
> }
> //input 0045 screen output 37
> //input 0049 output 4
> // 094 0
> //and so on
> //thank you
>
>

Also, iostream.h is deprecated. Use:

#include <iostream> // new header. Note we don't use conio.h
#include <limits> // new header. needed for input flush
using namespace std;
int main()
{
int zahl = 0;
cout << "Give me an int please: ";
cin >> zahl;
cout << "int = " << zahl <<endl;
cin.ignore(numeric_limits<std::streamsize>::max(),'\n'); // call lifted from Josuttis The C++ Standard Library, pg. 609
return 0;
}

red floyd, Dec 1, 2003