在此测试程序中,VS2012 Update 4和VS2013 Update 1之间出现了不同的行为:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <filesystem>
using namespace std;
using namespace std::tr2::sys;
void main()
{
string s("C:\\");
for (auto i = directory_iterator(path(s).parent_path()); i != directory_iterator(); ++i)
cout << (path(s).parent_path()/i->path()).string() << endl;
}
VS2012产生:
C:AUTOEXEC.BAT
...
VS2013产生:
C:C:AUTOEXEC.BAT
...
哪种行为符合C ++标准?
编辑
既然filesystem
还不是C ++标准,但是只是一个库提议,我改一下我的问题:VS2013行为是一个错误吗?
我相信这是VC ++ 2012中的错误。这是VS 2013中C ++ 11/14 STL功能,修复和重大更改的摘录。
<filesystem>的directory_iterator返回的路径太短(DevDiv#411531)。(请注意recursive_directory_iterator可以正常工作。)我们修复了directory_iterator以遵循N1975(文件系统V2草案)。(文件系统V3已备受关注,但不会在2013 RTM中实现。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句