使用C++/CLI从C#到C++获取结构后:
public value struct SampleObject
{
LPWSTR a;
};
Run Code Online (Sandbox Code Playgroud)
我想打印它的实例:
printf(sampleObject->a);
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:
错误1错误C2664:'printf':无法将参数1从'LPWSTR'转换为'const char*'
我怎样才能转换LPWSTR to char*?
提前致谢.
Iva*_*ali 19
使用wcstombs()位于的功能<stdlib.h>.以下是如何使用它:
LPWSTR wideStr = L"Some message";
char buffer[500];
// First arg is the pointer to destination char, second arg is
// the pointer to source wchar_t, last arg is the size of char buffer
wcstombs(buffer, wideStr, 500);
printf("%s", buffer);
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人!这个功能让我免于很多挫折.
只需使用printf("%ls", sampleObject->a)。使用lin %ls表示您可以传递wchar_t[]诸如L"Wide String"。
(不,我不知道为什么L和w前缀总是混在一起)
Naw*_*waz -1
不要转换。
使用wprintf而不是printf:
请参阅解释如何使用它的示例。
或者,您可以用作std::wcout:
wchar_t *wstr1= L"string";
LPWSTR wstr2= L"string"; //same as above
std::wcout << wstr1 << L", " << wstr2;
Run Code Online (Sandbox Code Playgroud)
wchar_t同样,使用为宽字符设计的函数,并忘记转换为的想法char,因为它可能会丢失数据。
在这里查看处理宽字符的函数: