C++ 在C++;,如何提取文本文件的文件路径

C++ 在C++;,如何提取文本文件的文件路径,c++,find,filepath,C++,Find,Filepath,我申请了一个竞赛,它打开一个文本文件并读取所有行: fstream infile("C:\Struct.in"); 但是竞赛规则没有提到文本文件应该放在哪里。嗯,我想它应该在程序所在的文件夹中。所以我可以告诉编译器在该文件夹中搜索: fstream infile("C:\Users\User...Struct.in"); 这个案例的问题是我不知道考官会把文件夹放在哪里,也许他会把它放在桌面上,也许他会把它放在他的下载中。。。这是个问题。最后,我发现最好的方法是,让编译器在运行时找到文件夹的位

我申请了一个竞赛,它打开一个文本文件并读取所有行:

fstream infile("C:\Struct.in");
但是竞赛规则没有提到文本文件应该放在哪里。嗯,我想它应该在程序所在的文件夹中。所以我可以告诉编译器在该文件夹中搜索:

fstream infile("C:\Users\User...Struct.in");
这个案例的问题是我不知道考官会把文件夹放在哪里,也许他会把它放在桌面上,也许他会把它放在他的下载中。。。这是个问题。最后,我发现最好的方法是,让编译器在运行时找到文件夹的位置,然后搜索文本文件并执行其余操作,例如:

string ExePath = GetFilePath(Program's Exe);
string TextFilePath = ExePath + "Struct.in";
fstream infile(TextFilePath);
PASCAL中的命令是“提取文件”,但我对C++是新的,那么有什么方法可以做到这一点吗?到目前为止,我已经在互联网上搜索过了,但没有找到任何有用的东西

我正在使用代码块12.11(编译器:gnu gcc)


非常感谢

它应该是
c:\\Struct
,因为
\
是转义字符。但是通常的解决方案是“”中的/Struct.in。Windows将理解此上下文中的
/
字符,并且
是当前目录的通用名称。

如果不指定路径,只指定文件名,它将放置在运行应用程序的文件夹中

fstream infile("Struct.in");

就是这样。

所以如果我写fstream infle(“./Struct.in”),它会得到位置吗?这么简单吗?它会得到“当前”位置,而这并不是你所需要的。但除非另有明确规定,否则为默认值。评委们也会这么认为。谢谢,这很有效,很简单,非常感谢