2013-05-07 3 views
2

저는 Windows에서 C++을 처음 사용하고 있습니다. unsigned intTCHAR *으로 변환하는 방법을 알려주시겠습니까?C++ windows 'unsigned int'를 'TCHAR *'로 변환하는 방법?

+1

포인터에 값을 변환 할 마십시오 비주얼 스튜디오에도 도움이 될 수 있습니다!? 'unsigned int'는 값에 바인드되는 변수이고'TCHAR *'는'TCHAR'에 대한 포인터입니다. 많은 대화가 그것들에 적용될 수 있습니다. – deepmax

+1

필요한 특정 전환에 대해 설명해주십시오. 정수를 문자열 표현으로 변환하십시오. 소수? 마녀? –

+0

그는 숫자를 _print_ 문자열에 넣으려고합니다. – bobobobo

답변

1

아마 unsigned int을 문자열로 변환하고 싶을 것입니다. TCHARWCHAR로 정의되어있는 경우에는 std::to_wstring를 사용할 수 있습니다

unsigned int x = 123; 

std::wstring s = std::to_wstring(x); 

그런 다음 TCHAR*s.c_str()을 변환합니다.

또한 MultiByteToWideChar을 살펴 봐야합니다.

+0

나는 이렇게하지 않을 것이다. 아래에서 정답을 참조하십시오. – bobobobo

+0

@bobobobo :이 방법은'printf'를 사용하는 것보다 10 배 더 좋습니다. 'to_wstring'은 버퍼 크기가 자동으로 조정되기 때문에 버퍼를 오버플로 할 수 없습니다. –

+0

@BenVoigt이 함수의 ['* _s' 버전을 사용할 수 있습니다.] (http://msdn.microsoft.com/en-US/library/ce3zzk1k(v=80) .aspx) – bobobobo

0

TCHAR *이 가리키는 위치를 설정할 수도 있습니다. (아마 나쁜 생각 ...)

또는 포인터로 가리키는 TCHAR 값을 설정할 수 있습니다. (이것은 당신이 원하는 아마. 비록 TCHAR는 유니 코드 또는 ANSI 될 수 있으므로 정수의 의미가 변경 될 수 있음을 기억하십시오.)

unsigned int char_int = 65; 
TCHAR* mychar = new TCHAR; 
*mychar = char_int; // Will set char to 'A' in unicode. 
+0

그는 넓은 문자열을 만드는 것처럼 보입니다. – Joel

+1

예. 글쎄, 나는 추측하고 있었다. – mwerschy

4

일반적인 방법은 wchar_t로 다양한 문자를 인쇄 할 수 swprintf을 사용하는 것입니다 (어느 TCHAR 정상적으로 정의됩니다).

TCHAR에 숫자를 인쇄하려면 아래의 @hvd 언급 (분노에 맞게)으로 _stprintf을 사용해야합니다. 이 방법으로 UNICODE이 정의되면 넓은 문자를 사용하고 UNICODE이 정의되지 않으면 ASCII 문자를 사용합니다.

int myInt = 400 ; 
TCHAR buf[300] ; // where you put result 
_stprintf(buf, TEXT("Format string %d"), myInt) ; 
+2

'swprintf'의 오버로드는'UNICODE'가 정의되어 있지 않을 때'char *'를 허용합니까? – hvd

+0

'swprintf'가'wchar_t * '를'TCHAR *'로 바꿀 수 있다고 생각하는 이유는 무엇입니까? – deepmax

+1

'TCHAR'는'UNICODE'가 정의되면'wchar_t'로 정의되고, 그렇지 않으면 Ascii'char'으로 정의됩니다. 'Windows.h'을 확인하십시오. – bobobobo

0

내가 너무 늦을 수 있지만이 프로그램은

#include "stdafx.h" 
#include <windows.h> 
#include <tchar.h> 
#include <strsafe.h> 

#pragma comment(lib, "User32.lib") 

int _tmain(int argc, TCHAR *argv[]) 
{ 
    int num = 1234; 
    TCHAR word[MAX_PATH]; 
    StringCchCopy(word, MAX_PATH, TEXT("0000")); 
    for(int i = 3; i >= 0 ;i--) 
    { 
     word[i] = num%10 + '0'; 
     num /= 10; 
    } 
    _tprintf(TEXT("word is %s\n"), word); 
    return 0; 
} 
관련 문제