我想将两个字符串附加在一起,以便可以使用MoveFile函数重命名文件。但是我的字符串拒绝连接,因此没有在“FILE-%s-%02d%02d%02d-%02d%02d.txt”中添加“E:\”,而是给我“E:\ FILE-%s-% 02d%02d%02d-%02d%02d.txt”,它给我的只是“E:\”,好像什么也没发生。
这是我完整代码的片段:
drivePathAgain = "E:\\";
sprintf(newname, "FILE-%s-%02d%02d%02d-%02d%02d.txt", szVolNameBuff, lt.wYear, lt.wMonth, lt.wDay, lt.wHour, lt.wMinute);
lstrcat((LPWSTR)drivePathAgain, (LPWSTR)newname);
result = MoveFile((LPCWSTR) drivePath, (LPCWSTR) drivePathAgain );
我无法将新名称附加到drivePathAgain上。如果您需要我发布整个代码以了解全局,则可以。有没有办法像这样追加字符串?
谢谢
最佳答案
根据您对LPWSTR
的转换,我假设您的项目是以Unicode模式设置的。这意味着像lstrcpy
和MoveFile
这样的函数正在接受指向wchar_t
字符串的指针,而不是char
。如果您不知道这意味着什么,则需要研究Ascii和Unicode之间的区别。
我怀疑这可能是您问题的根源。即使不是,从char*
转换为wchar_t*
(也称为LPWSTR
)最终可能会给您造成问题。强制转换指针与从一种字符串类型转换为另一种字符串类型不同。