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