2011-12-24 3 views
0

Как получить представление строки (как LPCWSTR) переменной типа UINT?преобразование между UINT и LPCWSTR в C++

+1

'UINT' является ЬурейиМ для' без знака int' и 'LPCWSTR' является 32-битным указателем на строку из 16-битных символов (давно pointer- to-constant-wide-character-string aka 'const wchar_t *'). Вы пытаетесь превратить 'UINT' в строку, или вы на самом деле означаете, что' UINT' должен указывать на строку? – birryree

+0

no no, я имел в виду строку, а не указатель –

+0

Вы не ответили на вопрос @ birryree - пытаетесь ли вы получить строковое представление целого числа (например, itoa)? – bobbymcr

ответ

4

A LPCWSTR - это константа LPWSTR, которая является указателем на строку с широким символом. Вы должны использовать std::wstringstream:

#include <sstream> 

// ... 

UINT number = 42; 
std::wstringstream wss; 
std::wstring str; 

wss << number; 
wss >> str; 
LPCWSTR result = str.c_str(); 
+2

Могу упомянуть, что вам нужно «#include ». – bobbymcr

+0

Есть ли какой-либо другой способ, кроме использования потоков? просто любопытно. –

+0

@bobbymcr Спасибо. Отредактировано, чтобы это отразить. – Marlon

1

Попробуйте _itow. Он принимает целое число без знака, адрес большого символьного буфера и какую базу использовать для преобразования.

Вот пример:

UINT x = 1000245; 
LPWSTR y = (LPWSTR)malloc(30); 

_itow(x, y, 10); 
+0

он не работает ... –

+0

Для MSVC вы должны использовать безопасную версию '_itow', чтобы избежать переполнения буфера,' _itow_s': http://msdn.microsoft.com/en-us/library/0we9x30h(v = VS.100) .aspx – bobbymcr

+0

Я получаю эту ошибку: main.cpp (45): ошибка C2660: '_itow_s': функция не принимает 3 аргумента –