cpp程序使用fstream进行多文件输入

Posted

技术标签:

【中文标题】cpp程序使用fstream进行多文件输入【英文标题】:cpp program multi-file input using fstream 【发布时间】:2016-07-27 13:35:01 【问题描述】:

我想询问有关输入多个文件或如何将文件名放入某个队列的最简单方法。 这个文件是关于编辑的。

我说,我有 100 个 txt 文件,每一个我想打开它,找到一些东西并保存它。

我有每个操作的功能/方法。

但我在将文件加载到程序中时遇到问题。我做了五个或更少的文件。

过程是。程序询问我程序根目录中的文件名或文件的完整路径 例如 C/myfile.txt

按回车后执行。

不幸的事情发生了,我每天必须处理 100 个文件。所以我知道在 C# 中可以打开文件对话框 - 加载多个文件...

在这个程序中,我正在考虑对字符串进行静态数组,并为每个字符串创建一个带有迭代的 for 循环。

但我不知道如何将这些字符串(文件名)加载到这个数组中更简单。

我在 msdn 上读过一些东西,但对我来说看起来很复杂。

有人可以帮忙吗?程序只适合我,我不想设置太多东西。有可能的? 我必须使用的代码中较少或简约的部分是什么 - 添加到我的程序中?

我想要的结果示例 数组[0] = C/文本。文本文件 数组[1] = C/texta.文本文件 ... 数组[50] = C/textdhsjfk。 txt

也许没有我想的那么容易,也许是的。

但是我没有这个专业的支持...所以我只是试图在互联网上找到一些东西,我不确定我找到的结果。

感谢您抽出时间并愿意提供帮助。

【问题讨论】:

你试过什么?循环和迭代器是一个不错的选择。 std::string 容器也是合适的。 您是在尝试打开和处理目录中的每个文件还是文件列表(如存储在文件中)? 我的程序以 cmd 样式运行所以我需要在这里拖放每个文件...我想用不同的东西替换拖放系统。我阅读了有关打开文件对话框的信息,但我不确定它是否适合并且对我来说不太复杂。我寻找最简单的方法如何在某处(数组)加载文件路径并存储它们,并为每个进程应用程序 当您选择多个文件,然后将它们拖到基于控制台的程序中时,Windows 会将每个文件作为程序的单独参数/参数放置。您需要将程序的参数复制到容器中。 那么,我需要的只是创建字符串数组?并为其设置cin函数? 【参考方案1】:

循环和容器看起来很好用:

static const char filenames[] =

  "C:\\Fred\\file1.txt", "c:\\Fred\\file2.txt", "c:\\Barney\\file1.txt",
;
static const unsigned int quantity_of_files =
    sizeof(filenames) / sizeof(filenames[0]);

//...
for (unsigned int i = 0u; i < quantity_of_files; ++i)

  std::ifstream input_stream(filenames[i]);
  Process_Input_Stream(input_stream);
  input_stream.close();

任务是让代码正确且健壮地工作,然后担心性能。

注意:程序设置为可以将文件名添加到数组中,而无需更改或重新测试代码。

【讨论】:

我想你的解决方案意味着我必须一个一个地加载文件。我想避免这种情况,并一次将所有 100 多个文件名放入一个数组中......每次(现在我知道)我将一次加载多达 110 个文件 = 110 个文件名......但我不确定是否有可能...就像在 c# 中打开文件对话框... 将文件名放入数组与打开它们完全不同。由于 OS 文件系统 API 不是并行的,您一次只能打开一个。 Linux 和 Windows 中没有批量文件打开功能。

以上是关于cpp程序使用fstream进行多文件输入的主要内容,如果未能解决你的问题,请参考以下文章

C++文件的输入和输出

java开启多进程,执行.exe文件

cpp►文件和流

多文件程序中的范围

使用 fstream 从 C++ 中的 .txt 文件获取文本的问题

C++项目 使用多文件,用两个cpp文件运行报错,而用标准的两个cpp和一个h头文件就能成功,是啥问题?