Paths.get( "abc/def.jpg" ) 在 C 和 C++ 中获取与操作系统无关的路径的等价物是什么?
What is the equivalent of Paths.get("abc/def.jpg") to get OS agnostic path in C and C++?
我想在Linux和Windows中编写和重用相同的代码,尤其是路径常量。
fopen(base+"subfolder/abc.bin","wb")
当我在Linux中为Windows交叉编译时,上面的代码工作正常。
但是,我必须将代码更改为fopen(base+"subfolder\abc.bin","wb")
才能直接在窗口中编译它。
现在,我已经向软件添加了许多依赖项,如果我交叉编译我的软件,则需要交叉编译,我不想这样做,因此,我在Windows和Linux版本的软件中使用预编译的二进制文件。
现在,我面临的问题是,如果我想在 Linux 中编译,我将不得不改变我不想做的路径,因为我必须维护软件的两个不同分支。有没有办法,类似于使用Paths.get("abcd/def/hij.bin").toString()
的Java。我不只是要求系统调用,一个识别底层操作系统并相应地更改路径字符串的自定义函数就可以了。
我需要 C 和 C++。
不确定您是否设法找到了解决方案,但您可以使用预定义的宏根据操作系统更改路径/字符串 下面是示例:
string getFileName(const string& s) {
char sep = '/';
#ifdef _WIN32
sep = '';
#endif
size_t i = s.rfind(sep, s.length());
if (i != string::npos) {
return(s.substr(i+1, s.length() - i));
}
return("");
}
下面是有关预定义宏的详细信息的链接。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 有没有办法获取用户操作系统的ANSI转义码?
- 当PSO细粒度策略对使用AdsGetObject MSDN API的Windows操作系统生效时,如何获取用户密码到期日
- 如何在c ++中获取操作系统名称?
- Paths.get( "abc/def.jpg" ) 在 C 和 C++ 中获取与操作系统无关的路径的等价物是什么?
- 如何使用C++准确获取Windows操作系统版本
- 是否有 API 来获取操作系统中定义的原始变量值
- 如何使用C++获取当前Windows操作系统版本7及更高版本的当前默认设置语言