我需要一种方法将文件移动到另一个目录,而无需在目标目录中指定文件名。
TCHAR szFileName[MAX_PATH];
GetModuleFileName(NULL, szFileName, MAX_PATH);
wchar_t* Favfolder = 0;
SHGetKnownFolderPath(FOLDERID_Favorites, 0, NULL, &Favfolder);
wstringstream ss(szFileName);
wstringstream ff(Favfolder);
rename(ss.str(), ff.str()); //Won't work
如果我使用 rename
,ff.str()
不包含文件名,因此它不会工作。
正确的做法是这样写:
重命名(C:\\Users\\blah\\blah\\filename.exe, C:\\Users\\blah\\newdir\\filename.exe);
我正在做的是:
重命名(C:\\Users\\blah\\blah\\filename.exe, C:\\Users\\blah\\newdir);
但我想不出在第二个示例中包含 filename.exe
的方法。
最佳答案
我假设您使用的是 wstring
,而不是 wstringstream
。
编辑: 完成所有工作的函数:
int move(const string &oldPath, const string &newDir)
{
const size_t pos = oldPath.find_last_of('\\');
const string newPath = newDir + '\\' + (pos == string::npos ? oldPath : oldPath.substr(pos));
return rename(oldPath.c_str(), newPath.c_str());
}
不幸的是,rename
不支持 wchar_t
所以我必须使用 string
,而不是 wstring
关于c++ - 将文件移动到另一个目录而不在目标目录中指定文件名的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31373402/