2017-03-23 43 views
1

我對C++非常陌生,所以我並不真正知道自己做錯了什麼,在java中我確實有一些有限的知識,但就是這樣。如何在C++中包含前面的0作爲整數輸入

我目前正在研究一個程序,要求用戶輸入一年(即2007年),該程序採用2年的數字(在這種情況下20和o7),然後它將1加到前兩位數字(所以21),那麼它再次顯示它們爲一年,這將是它們輸入年份的100年。

我的問題是,當我輸入2007或1206或任何數字與0作爲第三位數字,結果是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"); 

} 

的感謝!

+0

也許把你的輸入作爲一個字符串? –

+3

爲什麼不在整年添加100?否則,你需要以字符串的形式讀取第二部分,以保留前面的0(或者使用零填充,但這比這需要更復雜)。 – Dan

+0

感謝所有的答覆......最終我最終增加了100個年度,似乎成功了。謝謝! – TheUltimateAssasin11

回答

4

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

您可以使用它一路向上頂:

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; 
相關問題