0

我想使用 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);
4

2 回答 2

2

只是为了澄清,LPWSTR 是wchar_t*. 您可以使用wcscat_s连接这种形式的字符串。您的一个char*字符串应该只是更改为相同的类型,因为您将它作为一个简单的文字(只需在文字前面加上L并更改声明的类型)。但是,由于您将其标记为 C++,因此您可以使用std::wstring类更简单地完成所有这些操作。

于 2014-12-25T09:20:04.667 回答
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* 的 typdef。因此,如果您咨询 MSDN,您会看到:

typded wchar_t* LPWSTR;

这里 w_char* 意味着您的字符串将被编码为 UNICODE 而不是 ANSI 方案。所以在 Windows 下,一个 UNICODE 字符串将是一个 UTF16 字符串(每个字符 2 个字节)。

std::wstring 也是 std::basic_string 的 typedef<wchar_t,char_traits<>>所以通过将你的输入声明为 wstring 并调用wasting.c_str() 这将做的事情。

于 2014-12-25T10:16:49.730 回答