Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用wstring重命名文件? 我如何重命名C++中的文件?< /p> rename(tempFileName.c_str(), tempFileName.c_str()+"new.txt");_C++_Visual C++ - Fatal编程技术网

如何使用wstring重命名文件? 我如何重命名C++中的文件?< /p> rename(tempFileName.c_str(), tempFileName.c_str()+"new.txt");

如何使用wstring重命名文件? 我如何重命名C++中的文件?< /p> rename(tempFileName.c_str(), tempFileName.c_str()+"new.txt");,c++,visual-c++,C++,Visual C++,但是tempFileName的类型是std::wstring。但是,RealMeMe( >函数>只接受代码> const char */COD>参数。< P>因为您是针对Windows,使用函数代替.VisualC++中的< P>,RealMead(宽字符)版本是Y-WrEnMead()。这不是便携式的,但你可能不在乎。此外,您不能像那样添加原始字符串指针,您需要这样的东西(未经测试): 使用Visual Studio时,通常使用宽字符串。要重命名文件,您可以使用MoveFileEx-函数,您可

但是
tempFileName
的类型是
std::wstring
。但是,RealMeMe(<代码> >函数>只接受代码> const char */COD>参数。

< P>因为您是针对Windows,使用函数代替.VisualC++中的

< P>,RealMead(宽字符)版本是Y-WrEnMead()。这不是便携式的,但你可能不在乎。此外,您不能像那样添加原始字符串指针,您需要这样的东西(未经测试):


使用Visual Studio时,通常使用宽字符串。要重命名文件,您可以使用
MoveFileEx
-函数,您可以这样重命名文件

std::wstring newFilename = tempFileName.c_str();
newFilename += _T("new.txt");
if(!MoveFileEx(tempFileName.c_str(), newFilename.c_str(), flags )){
//error handling if call fails
}

有关文档,请参阅。

tempFileName.c_str()+“new.txt”
显然是错误的。
MoveFileEx
要求使用
const(w)char*
。LPTCSTR被定义为
const char*
,尽管我同意使用临时对象可能有点困难。@bash.d请确保下次发布正确的内容。这应该是对一个拥有近2k repOK的人的期望。调试101:如果发生了一些奇怪的事情,将问题分解。您正在组装一个fileSpec,因此您可能引入了一个“fileSpec”临时文件,并在尝试重命名之前将该规范组装到该文件中。当使用调试器检查temp时,您会发现它是不正确的。只需尝试一个快速示例,它就可以在这里工作。猜测您要重命名的文件不存在,或者您要重命名的文件已经存在-需要进行一些调试。值得注意的是,EPIPE被定义为32,这也是Windows错误代码error\u SHARING\u冲突的值(“该进程无法访问该文件,因为它正被另一个进程使用。”)这很可能是它对您不起作用的原因-您已经在其他地方打开了该文件。
std::wstring newFilename = tempFileName.c_str();
newFilename += _T("new.txt");
if(!MoveFileEx(tempFileName.c_str(), newFilename.c_str(), flags )){
//error handling if call fails
}