我想将两个字符串附加在一起,以便可以使用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模式设置的。这意味着像lstrcpyMoveFile这样的函数正在接受指向wchar_t字符串的指针,而不是char。如果您不知道这意味着什么,则需要研究Ascii和Unicode之间的区别。

我怀疑这可能是您问题的根源。即使不是,从char*转换为wchar_t*(也称为LPWSTR)最终可能会给您造成问题。强制转换指针与从一种字符串类型转换为另一种字符串类型不同。

10-08 17:03