Я в новичке в C ++ на Windows. Подскажите пожалуйста, как конвертировать unsigned int
в TCHAR *
?
Может быть, вы хотите преобразовать unsigned int
в строку. Ты можешь использовать std::to_wstring
если TCHAR
определяется как WCHAR
:
unsigned int x = 123;
std::wstring s = std::to_wstring(x);
Затем конвертировать s.c_str()
к TCHAR*
,
Также вы должны взглянуть на MultiByteToWideChar
.
Обычный способ заключается в использовании swprintf
печатать широкие символы в wchar_t
(который TCHAR
обычно определяется как).
Чтобы напечатать числа в TCHAR
, вы должны использовать _stprintf
как упоминает @hvd ниже (в приступе ярости). Таким образом, если UNICODE
определяется, вы будете использовать широкие символы, и если UNICODE
не определено, вы будете использовать символы ASCII.
int myInt = 400 ;
TCHAR buf[300] ; // where you put result
_stprintf( buf, TEXT( "Format string %d" ), myInt ) ;
Вы можете установить местоположение, указанное TCHAR *. (Вероятно, плохая идея …)
unsigned int ptr_loc = 0; // Obviously you need to change this.
TCHAR* mychar;
mychar = ptr_loc;
Или вы можете установить значение TCHAR, на которое указывает указатель. (Это, вероятно, то, что вы хотите. Хотя помните, что TCHAR может быть Unicode или ANSI, поэтому значение целого может измениться.)
unsigned int char_int = 65;
TCHAR* mychar = new TCHAR;
*mychar = char_int; // Will set char to 'A' in unicode.
я могу быть слишком поздно, но эта программа может помочь даже в визуальной студии
#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;
}
TCHAR buf[5];
memset(buf, 0, sizeof(buf));
return _itot_s(num, buf, 10);