gpt4 book ai didi

c++ - 绝对路径...困惑(ubuntu)

转载 作者:太空狗 更新时间:2023-10-29 12:08:27 24 4
gpt4 key购买 nike

所以在 Code::Blocks in Ubuntu(最新)中。

我有一个项目,我在其中加载一个文件并从中读取一个数字。

#include <fstream>
using namespace std;
int main(){
ifstream in("data/file.t");
int n;in>>n;
}

现在有了 cout<<n它显示-1203926 (和其他随机数)尽管文件​​中的数字是 0 .

data是二进制文件所在的位置(我的意思是数据和二进制文件位于同一文件夹(程序)中)并且我希望路径像 Windows 中那样是相对的...但前提是我放置完整路径 /home/csiz/Desktop/C++/ep0/Program/data/file.t它会给我一个0 .

你能告诉我如何让它成为相对路径吗?我更喜欢这样的东西,这样代码就可以在 Windows 中编译而无需任何更改。

最佳答案

该路径是相对于当前工作目录的,而不是您的应用程序所在的目录。

一个简单的解决方案是使用一个 SH 脚本将工作目录更改为您应用程序的目录,然后执行您的应用程序,如下所示:

$!/bin/sh

cd `dirname $0` # changes the working dir to the script's dir

./application-name # executes your application

# no need changing back to your previous working directory
# the chdir persists only until the end of the script

应用程序具有初始化脚本并不少见。

您也可以在主 C/C++ 应用程序中执行此操作。由于可执行文件的路径是在 main 方法的 argv[0] 中传递的,您也可以这样做。

但我不建议这样做,因为当您在 Linux 上重新分发您的应用程序时,数据文件通常与您的可执行文件(通常是/usr/bin)放在不同的目录中(通常是/var/lib)。

所以它要么是一个初始化脚本,要么在环境变量中传递你的数据目录的路径,像这样执行它......

MY_APP_DATA_PATH=/var/lib/my-app /path/to/executable

关于c++ - 绝对路径...困惑(ubuntu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com