【发布时间】:2014-11-25 19:05:39
【问题描述】:
我需要将所有文件从 1 个目录复制到另一个目录,但它不起作用。
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
TCHAR buffer[256];
SetCurrentDirectory ("C:\\Users\\Rinat\\Desktop\\SP\\1");
GetCurrentDirectory (sizeof (buffer), buffer);
printf ("%s\n", buffer);
WIN32_FIND_DATA FindData;
HANDLE MyFile;
MyFile = FindFirstFile ("*", &FindData);
if (MyFile != INVALID_HANDLE_VALUE) {
do {
printf ("%s\n", FindData.cFileName);
CopyFile("C:\\Users\\Rinat\\Desktop\\SP\\1"+FindData.cFileName, "C:\\Users\\Rinat\\Desktop\\SP\\2\\" + FindData.cFileName, FALSE);
} while (FindNextFile (MyFile, &FindData));
FindClose (MyFile);
}
system("PAUSE");
return EXIT_SUCCESS;
}
错误是 22 C:\Users\Rinat\Desktop\SP\7.cpp 类型为const char[28] 和CHAR[260] 的无效操作数到二进制operator+
【问题讨论】:
-
您不能使用运算符“+”附加字符缓冲区。特别是,这不起作用:
"C:\\Users\\Rinat\\Desktop\\SP\\1"+FindData.cFileName. -
如果你只是要把
TCHAR提供给期望char的东西,你为什么还要使用它? -
使用
std::string或std::wstring。不管它是什么,给每一个你称之为宽字符串的 winapi 东西。 -
@chris
TCHAR与此有何关系? @RinatBaiguzhinov 查看发布的答案。 -
@bialpio,嗯,这不是一个答案,但如果你只是假设它是一个或其他。更不用说
TCHAR早已过时了。