2012-04-05 79 views
0

日期月份部分我即filecreation日期和系統日期都在INT格式閱讀在C++

 "20120304","20120404" which is something like YYYYMMDD. 

兩個日期我只想把MM的部分這兩個日期的這些兩個日期從一個函數返回爲整數。

請提出一些實例

由於

+0

實際上yyyy是y,mm是m並且dd是d,並且它們被連接到一個變量日期,如date = y + m + d; – gandhigcpp 2012-04-05 05:31:29

+0

您的聲明表示形式爲整數對您的聲明沒有意義,即使用+簡單地將年,月和日值連接起來以產生最終值。你確定你的日期沒有被表示爲8個字符的字符串嗎? – 2012-04-05 05:35:45

+0

修改您的問題以顯示您正在討論的是什麼類型:是字符串還是整數。也請說出你的嘗試。另請閱讀[如何提問](http://stackoverflow.com/questions/how-to-ask) – 2012-04-05 06:49:34

回答

0

雖然我更喜歡@ keety的回答,但還有其他方法。 ü可以使用字符串流:

爲如:

#include <sstream> 

int i = 5; 
std::string s; 
std::stringstream out; 
out << i; 
s = out.str(); 

後你這麼有你的字符串作爲一個字符串varaible YYYYMMDDsubstr(4,2)將是你的月份。 您可以稍後使用strtol轉換回整數。

+0

:我得到的東西,並與其他假設我有ÿ糊塗了,d,m作爲三個字符串流,並將所有這些連接到另一個字符串作爲「date = y + m + d;」,然後將其轉換爲整數作爲返回atoi(date.c_str()); 那麼我怎麼現在從它substr現在已經是一個整數 – gandhigcpp 2012-04-05 05:43:55

+0

和代碼看起來像int mm = date.substr(4,2);其中日期返回爲一個整數。 – gandhigcpp 2012-04-05 05:49:07

0

如果它們總是在格式YYYYMMDD,則取在[4]長度2.

+0

:你可以告訴代碼plsss的形式... – gandhigcpp 2012-04-05 05:20:35

+0

他們的格式是YYYYMMDD然而這是一個整數而不是字符串 – gandhigcpp 2012-04-05 05:22:35

+0

@gandhigcpp:然後忽略我的答案並使用keety's。我會在幾個小時內刪除我的。 – wallyk 2012-04-05 05:29:12

3

子字符串,因爲它是int類型使用int mm=(yyyymmdd/100)%100

+0

@keely:它在做什麼「int mm =(yyyymmdd/100) %100「 – gandhigcpp 2012-04-05 05:23:50

+0

@gandhigcpp'yyyymmdd/100'會提取yyyymm,然後通過mod運算符'yyyymm%100'繼續提取mm部分 – keety 2012-04-05 05:26:38

+0

@keealy:正如我討論的那樣,是這樣的 date = y + m + d; //這裏是一個字符串 return atoi(date.c_str()); //將整數返回給函數 – gandhigcpp 2012-04-05 05:27:20