2016-11-30 26 views
-3

C/C++을 사용하고 있습니다. Windows 기능이 있으며, Title의 형식을 변환하는 매우 빠른 방법이 있습니다. const WCHAR *?INT8 ... INT64, UINT8 ... UINT64, float, double을 WCHAR로 변환 *

그래서 데이터를 WCHAR *로 변환해야하는 일부 지점으로 이동 한 후 데이터 유형을 확인하는 큰 경우가 있습니다.

예를 들어 21 인 경우 L이 21이 되길 원합니다. 32.322 => L "32.322" 등

나는 수동으로 할 수 있지만 좀 더 빠른 방법이 있다면 선호 할 것입니다! 이러한 전환은 저수준에서 많이 발생하는 것처럼 보입니다.

감사합니다.

+2

['표준 : to_wstring'] (http://en.cppreference.com/w/cpp/string/basic_string/to_wstring) – NathanOliver

+0

나는 단지 발견 UINT32위한 하나 개의 방법 : WCHAR 버피 [20] = 엘""; swprintf (buf, L "% u", UINT32_Value); 이 전환이 정상인지, 다른 전환이 무엇인지 아는 사람이 있습니까? – user7042812

+0

[stringstream] (http://en.cppreference.com/w/cpp/io/basic_stringstream)은 모든 전환 요구를 해결하는 가장 좋은 방법입니다. ostream처럼 작동합니다 (즉, "cout"). 이 경우에는'wstringstream'을 사용한다고 가정합니다. – Lundin

답변

1

C++ 11 또는 C++ 14를 사용하는 경우 std::to_wstring을 사용할 수 있습니다. 그렇지 않으면 이런 식으로 'swprintf'를 사용 :

적절한 배열 크기와 넓은 문자열 버퍼 만들기 :

wchar_t wstr[32]; 

정수로 변환하기를, '% d의'형식 'swprintf'를 사용 :

swprintf(wstr, L"%d", 21); 

지금 'WSTR는'로 'swprintf'를 사용, 당신의 "21"

를 포함하고 부동 소수점으로 변환하는 '%. * F'형식을. 소수점 다음에 최대 3 자리 숫자를 사용합니다 (기본적으로 6입니다). 그래서 가게에 덜 '은 wchar_t'을 요구한다 :

swprintf(wstr, L"%.*f", 3, 32.322f); 

지금 'WSTR는'당신은 "32.322는"

가 'swprintf'

sprintf, swprintf에 대한 자세한 내용은 다음 MSDN 페이지를보세요 포함

+0

감사! 그리고 어떻게 내가 INT8, INT16 UINT8 등 다를 것입니까? – user7042812

+0

@ user7042812 INT8에서 INT32까지 "% d"이면 충분합니다. INT64에 "% ll"을 (를) 사용하십시오. UINT8 ~ UINT32와 같은 부호없는 데이터 유형에는 "% u"를 사용하고 UINT64에는 "% llu"를 사용하십시오. –

+0

@ user7042812 printf/sprintf/swprintf 등 기능의 형식에 대한 자세한 내용은 다음 링크를 확인하십시오. http://www.cplusplus.com/reference/cstdio/printf/ –