如何连接char *和LPWSTR字符串?

时间:2014-12-25 09:13:43

标签: c++ windows string-concatenation lpwstr

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

2 个答案:

答案 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(),这将完成这些工作。