2010-06-30 56 views
1

我在我的程序中有一個簡單的功能,當時我想弄亂unicode並用它做東西。在這個功能中,我希望顯示用戶輸入的字符的代碼值。它似乎有可能,這是我的功能:如何將wchar_t轉換爲int來顯示代碼點?

wstring listcode(wchar_t arg) { 
    wstring str = L""; 
    str += static_cast<int> (arg); //I tried (int) arg as well 
    str += L": "; 
    str += (wchar_t) arg; 
    return str; 
} 

現在你看,我只是想顯示整數值(如一個ASCII字符,如(int) "a"),但類似listcode(L"&")將顯示爲&: &

難道不可能找到這樣的寬字符的整數值嗎?

+0

我認爲你不應該將+ =一個int而不將它轉換爲字符串表示。 – wRAR 2010-06-30 05:18:01

+0

它工作正常返回只是一個int。 – 2010-06-30 05:22:28

+0

不,只需將(int)arg轉換爲一個wstring,然後將其添加到str(我不知道如何在C++中正確執行該操作)。 – wRAR 2010-06-30 05:24:17

回答

3

在C++中,不能向字符串添加任何內容,但可以添加字符和其他字符串。沒有從int(或其他)到字符串的隱式轉換。這就是字符串類型的設計方式。
你做的,而不是什麼是使用字符串流:

std::wstring listcode(wchar_t arg) 
{ 
    std::wostringstream oss; 
    oss << static_cast<int>(arg); 
    oss << L": "; 
    oss << arg; 
    return oss.str(); 
} 

然而在實踐中,在C++中轉換爲字符串時,最好是有功能寫入流,比返回的字符串:

void listcode(std::wostream os, wchar_t arg) 
{ 
    os << static_cast<int>(arg); 
    os << L": "; 
    os << arg; 
} 

這樣,如果你想輸出一些東西給控制檯或文件,你可以直接通過std::cout或文件流,如果你想要一個字符串,你只需傳遞一個字符串流。