gpt4 book ai didi

c++ 将 char* 的 ascii 字符转换为 unix 文件名

转载 作者:搜寻专家 更新时间:2023-10-31 00:13:15 26 4
gpt4 key购买 nike

我有一个 char* 只包含 ASCII 字符(十进制:32-126)。我正在寻找一个 c++ 函数,它转义(在字符前添加反斜杠)在 unix 文件系统中具有特殊含义的字符,如“/”或“.”。我想稍后用 fopen 打开文件。

我不确定,手动替换是否是一个不错的选择。我不知道所有具有特殊含义的字符。我也不知道是否“?”或者 '*' 可以与 fopen 一起使用。

最佳答案

实际上 Unix(或更具体地说是 SuS)只允许在文件名中使用字节值 '/' 和 '\0'。其他一切实际上都是公平的游戏。 确切的(在他们紧跟在'/'之后的意义上)字符串“。”和“..”保留给相对路径访问,但它们在 Unix 路径中非常有效。

当然还有任意数量和顺序的“.”在 Unix 文件名中是完全允许的,只要除 '/' 或 '\0' 之外的另一个字符是文件名的一部分。是的,换行符、任何控制字符,它们都是完全有效的 Unix 文件名。

当然,您使用的文件系统可能对允许的内容有不同的想法,但您只是在询问 Unix。

更新:

哦,应该注意的是,Unix 没有为文件名指定圆顶“解析”方法。这实质上意味着,文件名被视为键→值数据库中的二进制 blob 键。这也意味着,对于 Unix 文件名没有“转义”这样的事情。

关于c++ 将 char* 的 ascii 字符转换为 unix 文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27585667/

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