我正在尝试使用fstream来创建文件,但我正在尝试创建的文件不会出现在.exe目录或文件目录中的任何其他位置。在我的计算机中搜索该文件后,我发现它完全是在不同的目录中创建的,即使我使用的是相对目录。
这是创建文件的代码:
ofstream file;
file.open("something.jpg", ios::out|ios::binary|ios::beg);
创建文件的目录:C:\ Users \ user-pc
项目目录:D:\ Users \ user-pc \ Documents \ Visual Studio 2012 \ Projects \ recvFile
顺便说一下,使用绝对目录可以很好地完成。这可能是项目工作目录的问题吗?
答案 0 :(得分:1)
在Visual Studio中右键单击项目,单击“属性”,然后转到“配置属性”,再转到“调试”。有一行"工作目录"。您可以在那里设置工作目录。如果您需要以编程方式执行此操作,则可以使用SetCurrentDirectory。
如果您需要在与.exe位置相同的目录中创建文件,则可以使用以下方法:https://stackoverflow.com/a/124901/1915854
使用0作为模块句柄调用GetModuleFileName()...
如果.exe
安装在Program Files
等共享目录中,那么在同一目录中创建文件可能需要额外的权限,这可能是个坏主意。如果.exe
只是克隆到应该创建文件的目录,那么就没有这样的问题了。
答案 1 :(得分:0)
尝试添加" ../"到链接:
file.open("../something.jpg", ios::out|ios::binary|ios::beg);
答案 2 :(得分:0)
将在项目的Debug / Release文件夹中创建文件。试试Timo Rzipa的建议。