将LPSTR转换为LPCWSTR
Converting LPSTR to LPCWSTR
我有两个函数!第一个是
GetUserName(LPSTR buffer, LPDWORD size);
和
SetInfo(LPCWSTR user, int secret);
我必须将GetUserName
的输出(即buffer
)作为LPSTR
然后我必须在SetInfo
函数中使用该字符串作为LPCWSTR
我的问题是;做这件事最安全、最好的方法是什么?
这里可以使用MultiByteToWideChar
吗?谢谢
如果GetUserName
函数是Windows API函数,则可以显式调用宽版本:
wchar_t buffer[100];
GetUserNameW(buffer,100);
调用许多Windows API的正确方法是进行第一次调用,提供空缓冲区并请求大小。然后分配缓冲区并进行调用。
以下是GetUserNameW
的一个示例。
DWORD size = 0;
wstring name;
auto ret = GetUserNameW(nullptr, &size);
if(!ret && ERROR_INSUFFICIENT_BUFFER == ::GetLastError() && size > 0)
{
wstring.resize(size);
ret = GetUserNameW(&name[0], size);
}
相关文章:
- C++ 在参数中将字符串转换为 LPCWSTR
- CPP Windows 字符串转换混淆了 CStringA 和 LPCWSTR
- 代码 c++ VS 2010 中的 LPCWSTR 到字符串转换问题
- 无法将常量字符 [16] 转换为 LPCWSTR
- 无法将参数 2 从 'const char [5]' 转换为 'LPCWSTR'
- 如何转换LPCWSTR和CHAR
- 如何将 CStringW 转换为 LPCWSTR
- 将SystemTime转换为LPCWSTR
- LPCWSTR 无法在 TextOut() 方法上正确转换
- 无法将'LPCWSTR {aka const wchar_t*}'转换为 'LPCSTR {aka const char*}
- 如何将DWORD或char*类型的变量转换为LPCWSTR
- 'HMODULE GetModuleHandleW(LPCWSTR)':无法将参数 1 从 'const char *' 转换为 'LPCWSTR'
- 从字符转换为 LPCWSTR
- 如何将字符* 转换为 LPCWSTR
- 错误 C2664:'auxDIBImageLoadW':无法将参数 1 从 'LPSTR' 转换为 'LPCWSTR'
- 将浮点数转换为 LPCWSTR
- 如何将LPCWSTR转换为LPWSTR
- 将LPSTR转换为LPCWSTR
- 调用CreateProcessW(Mobile MFC)时BSTR到LPCWSTR的转换
- LPCWSTR转换为char*,反之亦然