2010-06-30 3 views
1

저는 유니 코드로 주위를 어지럽히고 싶었던 프로그램에서 간단한 기능을했습니다. 이 함수에서 사용자가 입력 한 문자의 코드 값을 표시하고 싶습니다. &: &로 표시됩니다 이제 (예 : (int) "a"으로, ASCII 문자와 같은) 그냥 정수 값을 표시하고 싶었을 참조로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; 
} 

하지만 listcode(L"&") 같은 : 그것은 가능한 듯, 여기 내 기능입니다!

이와 같이 넓은 문자의 정수 값을 찾을 수 있습니까?

+0

문자열 표현으로 변환하지 않고 wstring에 + = int를 사용하면 안된다고 생각합니다. – wRAR

+0

그냥 int 반환하는 잘 작동합니다. –

+0

아니요, str에 추가하기 전에 wstring으로 arg를 변환하십시오 (C++에서 올바르게 수행하는 방법을 모르겠습니다). – wRAR

답변

3

C++에서는 문자열과 문자 및 기타 문자열을 추가 할 수 없습니다. int (또는 다른 것)에서 문자열로의 암시 적 변환은 없습니다. 그것은 문자열 유형이 설계된 방식입니다. C++에서 문자열로 변환 할 때, 그것은 문자열 돌아보다, 스트림에 쓰기 기능을 가지고하는 것이 좋습니다,하지만, 실제로

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

:

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

은 당신이 대신 할 것은 문자열 스트림을 사용하는 것입니다

그런 식으로 콘솔이나 파일에 무언가를 출력하려면 std::cout이나 파일 스트림을 직접 전달할 수 있습니다. 문자열을 원할 경우 문자열 스트림을 전달하면됩니다.