我想使用MoveFile函数,这个函数使用两个LPWSTR参数,但我有一个char *和LWSTR,如何连接它们?
//move file
LPWSTR latestFile = L"test.SPL";
char* spoolFolder = "C:\\Windows\\System32\\spool\PRINTERS\\";
LPWSTR fileToMove = spoolFolder + latestFile;
BOOL moved = MoveFile(latestFile, L"C:\\UnprocessedFiles\\" + latestFile);
答案 0 :(得分:2)
为了澄清,LPWSTR是wchar_t*
的typedef。您可以使用wcscat_s来填充此表单的字符串。您的一个char*
字符串应该只是更改为相同的类型,因为您将其作为一个简单的文字(仅使用L
为文字加前缀并更改声明的类型)。但是,由于您将此标记为C ++,因此您可以使用std::wstring类更简单地完成所有这些操作。
答案 1 :(得分:1)
std::wstring latestFile = wstring("test.SPL");
std::wstring spoolFolder = wstring("C:\\Windows\\System32\\spool\PRINTERS\\");
std::wstring fileToMove = spoolFolder + latestFile;
BOOL moved = MoveFile(latestFile.c_str(), fileToMove.c_str());
事实上,LPWSTR只是w_char *的典型代码。因此,如果您查阅MSDN,您将看到:
typded wchar_t* LPWSTR;
这里w_char *表示您的字符串将被编码为UNICODE而非ANSI方案。因此,在Windows下,UNICODE字符串将是UTF16字符串(每个字符为2个字节)。
std :: wstring也是std :: basic_string <wchar_t,char_traits<>>
的typedef所以通过将输入声明为wstring并调用wasting.c_str(),这将完成这些工作。