从具有未知名称但具有已知目录c++; 我在C++中建立了一个程序,检查文本有多少个单词。 文本存储在与my.exe文件位于同一目录的.txt文件中。我想知道,只要.txt文件与.exe文件位于同一目录中,是否有办法使.txt文件的名称不相关?我希望能够更改.txt文件的名称,并且仍能成功运行我的程序,而不会收到“打开文件时出错”消息。

从具有未知名称但具有已知目录c++; 我在C++中建立了一个程序,检查文本有多少个单词。 文本存储在与my.exe文件位于同一目录的.txt文件中。我想知道,只要.txt文件与.exe文件位于同一目录中,是否有办法使.txt文件的名称不相关?我希望能够更改.txt文件的名称,并且仍能成功运行我的程序,而不会收到“打开文件时出错”消息。,c++,file,fstream,C++,File,Fstream,您需要枚举应用程序文件夹中的文件,直到找到扩展名为.txt的文件 但是,标准C++库中没有任何东西来处理它。 您需要使用特定于平台的API 1来确定运行应用程序的文件夹,然后您可以使用特定于平台的API 2或第三方跨平台API 3来枚举该文件夹中的文件 一旦你发现了这个文件,只有这样你才能打开它 1:(如在Windows上解析的结果) 2:(喜欢和在Windows上) 3:(类似)你有两个问题:第一个是没有标准的方法来列出C++中的目录内容。为此,您必须使用操作系统功能。第二个问题是,您的目录也

您需要枚举应用程序文件夹中的文件,直到找到扩展名为
.txt
的文件

但是,标准C++库中没有任何东西来处理它。

您需要使用特定于平台的API 1来确定运行应用程序的文件夹,然后您可以使用特定于平台的API 2或第三方跨平台API 3来枚举该文件夹中的文件

一旦你发现了这个文件,只有这样你才能打开它

1:(如在Windows上解析的结果)
2:(喜欢和在Windows上)

3:(类似)

你有两个问题:第一个是没有标准的方法来列出C++中的目录内容。为此,您必须使用操作系统功能。第二个问题是,您的目录也不是很清楚@DimChtz:没有用于获取调用进程的可执行路径的标准API(除非您计算
argv[0]
,但这只适用于控制台应用程序,并且可能存在错误)。当该目录中有两个或多个文本文件时会发生什么情况?也许您应该要求在命令行上传递文件名。C++17几乎与
boost::filesystem
一模一样,因此这可能值得一提。@MilesBudnek:不过这有一段时间不适用了。考虑到许多人甚至还没有使用C++11,他们不太可能马上跳到C++17。