0

MoveFile 関数を使用したいのですが、この関数は 2 つの LPWSTR 引数を使用しますが、char* と LWSTR が 1 つあります。それらを連結するにはどうすればよいですか?

//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

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* は、文字列が ANSI スキームではなく UNICODE としてエンコードされることを意味します。そのため、Windows では UNICODE 文字列は UTF16 になります (文字ごとに 2 バイト)。

std::wstring は std::basic_string の typedef でもある<wchar_t,char_traits<>>ため、入力を wstring として宣言し、wasting.c_str() を呼び出すと、これが実行されます。

于 2014-12-25T10:16:49.730 に答える