保存数组中的文件列表

时间:2014-12-10 16:01:09

标签: c++11

我正在制作一个C ++程序,它应该能够列出特定目录中的文件并将每个文件名保存为字符串(将进一步处理以进行转换)。我需要字符串数组吗?我应该使用哪种功能。文件数量不固定。 主要是我无法手动输入名称。我必须接受生成的列表中的名称。

2 个答案:

答案 0 :(得分:0)

在这种情况下,您想使用vector

#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> file_names;

    file_names.push_back("file1.txt");
    file_names.push_back("file2.txt");
    file_names.push_back("file3.txt");
    file_names.push_back("file4.txt");

    return 0;
}

答案 1 :(得分:0)

您是否考虑过使用某些命令行工具来解决这个问题?即使输入重定向也适用于此。例如:

./Cpp < echo somedir/*

其中Cpp是已编译二进制文件的名称,somedir是您要从中读取的目录

然后在您的c ++程序中,您只需使用std::cin从标准中读取每个文件名。

#include <vector>
#include <string>
#include <iterator> // std::istream_iterator, std::back_inserter
#include <algorithm> //std::copy
#include <iostream> // std::cin


int main()
{
    std::vector<string> file_names;

    // read the filenames from stdin
    std::copy(std::istream_iterator<std::string>(std::cin), std::istream_iterator<std::string>(), std::back_inserter(file_names));

    // print the filenames
    std::copy(file_names.begin(), file_names.end(), std::ostream_iterator<std::string>(std::cout, "\n"));

    return 0;
}