如果扩展名有4个字符,则无法重命名文件

时间:2013-08-13 17:41:06

标签: c++ visual-c++

我需要从我的C ++程序重命名文件,所以我使用rename(),它应该是标准的一部分(see cplusplus.com)。

在Linux上它工作正常,但在Windows 64位上,rename()调用失败。 rename()调用不喜欢在其扩展名中包含4个字符的源文件。

这是组合及其效果:

1)源扩展名中的4个字符:

const int ret = rename("test.toml", "renamed.toml");

然后ret == -1并且没有重命名。

2)源扩展名中有3个字符,目的地中有4个字符:

const int ret = rename("test.tom", "renamed.toml");

然后ret == 0并重命名成功。

3)到处都是3个字符:

const int ret = rename("test.tom", "renamed.tom");

然后ret == 0并重命名成功。

根据MSDN,可能的返回值列表为here,并且不包含“-1”......

我切换到cstdio的rename(),因为我有与boost类似的问题:使用boost:filesystem :: rename()抛出一个我从未能够诊断的异常...

有什么可能导致这个?我在Windows 64位上使用Visual Studio 2012 Express Update 3(v11.00.60610.1)。感谢。

0 个答案:

没有答案
相关问题