1

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

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 中,命令是“ExtractFilePath”,但我是 C++ 新手,有什么办法吗?到目前为止,我已经在互联网上搜索,但我找不到任何有用的东西。

我正在使用 CodeBlocks 12.11(编译器:gnu gcc)

非常感谢

4

2 回答 2

1

If you don't specify a path, just the filename, it will be placed in the folder where the application is running.

fstream infile("Struct.in");

That's it.

于 2013-10-30T10:42:03.023 回答
1

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

于 2013-10-30T10:40:37.000 回答