2012-06-30 122 views
0

我試圖提取兩個(int32_t)值,並將它們放在一個char數組中。將兩個整數值連接成一個char數組

int32_t version = getVersion(); 

if (version < 0) 
{ 
    return; 
} 
else 
{ 
    //first part of number needs to be shifted right 
    int32_t major = (((version) >>16) & 0xFFFF); 
    int32_t minor = ((version) & 0xFFFF); 

    // need to concatenate these two values, and place a "." between them 

    setVersion(...);//requires a char array, should for example be "1.1" 
} 

任何人都可以給我任何建議的最佳方式來做到這一點?請不要使用std :: strings。 我寧願一個字符數組。

在此先感謝

+0

請顯示預期的輸入和輸出。 – robert

回答

6

您可以使用strstream

char v[255] = {}; 
{ 
    std::strstream vs(v, 254); 
    vs << major << '.' << minor; 
} 
setVersion(v); 
+0

謝謝Johannes – user1381456

0

這裏是做的另一種方式。

snprintf(charArray, sizeof(charArray), "%d.%d", major, minor); 

// Please check the correctness for format specifier and verify the return 
// value too. 

如果您在Windows平臺上,請使用_snprintf_s

+0

看起來不錯,製作字符數組需要多大的尺寸?作爲即時提取這兩個值,再加上「。」? – user1381456

+2

正如在約翰內斯答案中,你需要有一些零初始化的默認大小。您可以使用某些邏輯來計算主要,次要數字的位數,並且設置'charArray'的動態大小,佔主要+ dot + minor + null的大小。但這取決於您採取何種方式。 – Mahesh

+0

我會考慮C的這個好建議。但是對於C++來說,不正確類型的危險(並且不需要速度)將這種方式視爲有效的用法。 –