Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c+中UINT和LPCWSTR之间的转换+;_C++_String Conversion - Fatal编程技术网

C++ c+中UINT和LPCWSTR之间的转换+;

C++ c+中UINT和LPCWSTR之间的转换+;,c++,string-conversion,C++,String Conversion,如何获取UINT类型变量的字符串表示形式(如LPCWSTR)?aLPCWSTR是一个常量LPWSTR,它是指向宽字符串的指针。您应该使用std::wstringstream: #include <sstream> // ... UINT number = 42; std::wstringstream wss; std::wstring str; wss << number; wss >> str; LPCWSTR result = str.c_str()

如何获取
UINT
类型变量的字符串表示形式(如
LPCWSTR
)?

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();
#包括
// ...
UINT数=42;
std::wstringstream wss;
std::wstring-str;
wss>str;
LPCWSTR result=str.c_str();

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();
#包括
// ...
UINT数=42;
std::wstringstream wss;
std::wstring-str;
wss>str;
LPCWSTR result=str.c_str();

试试看。它接受一个无符号整数、宽字符缓冲区的地址以及用于转换的基数

下面是一个例子:

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

_itow(x, y, 10); 

试试看。它接受一个无符号整数、宽字符缓冲区的地址以及用于转换的基数

下面是一个例子:

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

_itow(x, y, 10); 


UINT
是无符号int的类型定义,
LPCWSTR
是指向16位字符字符串的32位指针(指向常量宽字符串aka
const wchar\u t*
)。你是想把
UINT
转换成一个字符串,还是真的想把
UINT
转换成一个指向字符串的指针?不,我是说字符串,不是指针。你没有回答@birrree的问题——你是想得到整数的字符串表示形式(比如“itoa”)?@birrree:这不一定是32位的。它很可能是64位。@DeadMG-我直接从一个MSDN网站上得到了这个解释,可能有点过时(x64之前)。
UINT
是无符号int的类型定义,
LPCWSTR
是指向16位字符字符串的32位指针(指向常量宽字符串aka
const wchar\u t*
)。你是想把
UINT
转换成一个字符串,还是真的想把
UINT
转换成一个指向字符串的指针?不,我是说字符串,不是指针。你没有回答@birrree的问题——你是想得到整数的字符串表示形式(比如“itoa”)?@birrree:这不一定是32位的。它很可能是64位。@DeadMG-我直接从MSDN网站上得到了这个解释,可能有点过时了(x64之前)。可能想提一下您需要
#包括
。除了使用流,还有其他方法吗?只是好奇。@阿布拉利:C++方式是使用字符串流。C方式是使用@robeingon在其答案中所示的
\u itow
(除非您实际上应该使用
\u itow\u s
,以避免缓冲区溢出)。如果你使用C++,使用C++……一个LPCWSTR是一个常数LPWSTR——不完全是这样。常量
LPWSTR
应该是
wchar\u*const
,但是
LPCWSTR
const wchar\u*t*
@Marlon:不,那也不正确,因为那将是
wchar\u*const*
。在
LPWSTR
上没有任何资格认证将使您获得与
LPCWSTR
相当的资格,typedef将其固定。可能需要提及的是您需要
#包括
。除了使用流,还有其他方法吗?只是好奇。@阿布拉利:C++方式是使用字符串流。C方式是使用@robeingon在其答案中所示的
\u itow
(除非您实际上应该使用
\u itow\u s
,以避免缓冲区溢出)。如果你使用C++,使用C++……一个LPCWSTR是一个常数LPWSTR——不完全是这样。常量
LPWSTR
应该是
wchar\u*const
,但是
LPCWSTR
const wchar\u*t*
@Marlon:不,那也不正确,因为那将是
wchar\u*const*
。在
LPWSTR
上没有任何限定将使您获得与
LPCWSTR
等价的类型定义。对于MSVC,您应该使用
\u itow
的安全版本以避免缓冲区溢出,
\u itow\s
:我得到这个错误:main.cpp(45):错误C2660:“\u itow\u s”:函数不接受3个参数。警告:要使用\u itow\u,需要传入缓冲区的大小。从上面的大小可以是15(30/2 - 30是缓冲区大小,2是siZeof(WC++)),所以调用将是iToWOSX(x,y,15, 10)。在这种情况下,您可能希望避免使用malloc。您可以像这样使用new:lpwstry=newwchar\u t[15];很抱歉,我没有注意到你是否想要C或C++的答案。对于MSVC,你应该使用安全版本的<代码> TIOW避免缓冲区溢出,<代码> ItOWOWS :我得到这个错误:Meal.CPP(45):错误C2660:“\u itow\u s”:函数不接受3个参数。警告:要使用\u itow\u,需要传入缓冲区的大小。从上面的大小可以是15(30/2 - 30是缓冲区大小,2是siZeof(WC++)),所以调用将是iToWOSX(x,y,15, 10)。在这种情况下,您可能希望避免使用malloc。您可以像这样使用new:lpwstry=newwchar\u t[15];我为翻转这件事道歉,我没有注意看你是否想要C或C++答案。