我需要从我的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)。感谢。