2011-08-01 40 views
0

如何將CURRENCY類型轉換爲長整型?將CURRENCY轉換爲長整型

我需要能夠做到這一點,因爲我想把貨幣類型的值轉換爲使用的sprintf%d

我有一個艱難的時間與這一個,幫助表示讚賞:)

+2

C++沒有CURRENCY類型,所以我們需要更多地瞭解它是什麼類型的結構 –

+0

您可以添加類CURRENCY的定義,我們可以建議如何準確地創建重載的操作符和訪問器將允許你做你需要的東西。 – Soren

+0

使用VariantChangeType將其轉換爲字符串,用%ls對其進行sprintf處理。 –

回答

0

如果貨幣是一個字符串,可以使用

sscanf(currency, "%d", &myLong); 

如果它是任何其他基本數據類型,你可以強制轉換,如

long myLong = (long)currency; 

如果您有關於數據類型的更多信息,請將其編輯到您的文章中。

0

CURRENCY是一個在你的代碼中定義的類(即它不是本地C++類型)。

如果您的類是由其他人編寫的,您的類可能已經具有將其轉換爲int(或long)的能力。你可以試着去弄清楚(1)readinh的頭文件或(2)compileing這個

CURRENCY mymoney; 
    printf("%d",static_cast<long>(mymoney)); 

,看看如果編譯器讓你與脫身 - 如果是的話那麼很可能是已經爲該課程定義了一個演員操作符。

許多人不喜歡你在C++代碼中使用sprintf,但更喜歡使用流。如果是的話有可能代替定義的<<運營商 - 你可以嘗試,以確定(1)讀取包括文件,或(2)編譯此代碼

CURRENCY mymoney; 
    std::cout << mymoney << std:: endl; 

如果沒有,你可能需要編寫代碼在Currency類上重載<<operator和/或long cast操作符以將流輸出和投射所需的值返回給其他類型。

1

我假設你想把一個CURRENCY的值賦給一個long。正如您在文檔中看到的,貨幣只是一個64位整數,存儲貨幣單位的1/10000。單位我指的是美元,英鎊,歐元等。不是硬幣,美分等。你所要做的就是做到這一點:long value = (long)currency.int64。請記住,如果成員int64中的值大於LONG_MAX或小於LONG_MIN,那麼您將收到截斷錯誤。

爲什麼您需要將該值轉換爲長整型?你不能像原來一樣使用CURRENCY聯盟嗎?