如何在C ++中包含前面的0作为整数输入

时间:2017-03-23 02:07:09

标签: c++

我对C ++很陌生,所以我并不确切地知道我做错了什么,我对java的知识有限,但就是这样。

我目前正在制作一个程序,要求用户输入一年(即2007年),程序将获取当年的2个数字(在本例中为20和o7),然后将前1位数加1(所以21)然后再将它们显示为一年,这将比它们输入的那一年提前100年。

我的问题是当我输入2007或1206或任何以0为第3位的数字时,结果为217(对于2007年的情况)。我想知道是否有办法确保输出包括一年中的所有数字。

到目前为止,这是我的计划:

 #include <iostream>
 #include <cstdlib>
 #include <string>
 #include <iomanip> 

 using namespace std;

 int main()
 {
 cout.precision(4);
 cout << setfill('0') << setw(2) << x ;
 //declaring variables
 int year;
 int firstDigits;
 int secondDigits;
 int newFirstDigits;
 int newSecondDigits;
 int newYear;
 //gets the year from the user
 cout <<"please enter a year in YYYY format"<<endl;
 cin>>year;
 //finds the dirst 2 digits
 firstDigits=year/100;

 //finds the second 2 digits 
 secondDigits=year%100;

 //adds 100 years to the year that was inputted
 newFirstDigits=firstDigits+1;

 newSecondDigits=year-firstDigits*100;
 //outputs to the user what 100 years 
 //from the year they entered would be
 cout<<"the new year is "<<newFirstDigits<< newSecondDigits<<endl; 

 system ("PAUSE");

 }

提前感谢!

1 个答案:

答案 0 :(得分:4)

使用<iomanip>中的std::setw(int width)

你一直使用它:

 cout << setfill('0') << setw(2) << x ;

但是只会在打印x时设置它。将来打印到cout时,IO操作会丢失。你想要做的是:

 cout << "the new year is "
      << setfill('0') << setw(2) << newFirstDigits
      << setfill('0') << setw(2) << newSecondDigits << endl;