我正在使用boost文件系统,我有以下代码来获取根目录中的文件列表。
#include <string>
#include <iostream>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;
int main()
{
path p("/");
for (auto i = directory_iterator(p); i != directory_iterator(); i++)
{
if (!is_directory(i->path()))
{
cout << i->path().filename().string() << endl;
}
else
continue;
}
}
但是我在 gcc [ubuntu]
中遇到了以下错误error: ‘i’ does not name a type
for (auto i = directory_iterator(p); i != directory_iterator(); i++)
答案 0 :(得分:3)
GCC不会自动启用C ++ 11模式,而使用auto
进行类型推导则需要C ++ 11模式(或更高版本)。
您可以使用-std=c++11
选项启用此选项:
$ g++ -std=c++11 your_source_file.cpp
答案 1 :(得分:2)
关键字auto
的使用仅在c ++ 11中有效。您使用的是兼容的编译器吗?在c ++ 11之前,auto
是存储持续时间说明符。您的错误看起来像编译器以旧的方式解释它。