/ / c ++ конвертиране на знак * на ASCII символи в UNIX filename - c ++, ascii, имена на файлове

c ++ конвертиране на знака * на ASCII символи в UNIX filename - c ++, ascii, имена на файлове

Имам знак *, който съдържа само ASCIIзнаци (десетично: 32-126). Търся функция c ++, която избягва (добавете обратно наклонена черта преди знака) символи, които имат специални значения в unix файловата система като "/" или "." Искам да отворя файла с fopen по-късно.

Не съм сигурен, ако ръчното заместване ще бъде добър вариант. Не знам всички герои със специални значения. Аз също не знам дали "?" Или "*" ще работи с fopen.

Отговори:

4 за отговор № 1

Всъщност Unix (или по-специфичен SuS) забранява само стойностите на байт "/" и " точен (в смисъл, че те незабавно следват и следват "/") низове "." и ".." са запазени за относителния достъп до пътя, но те са много добре валидни в Unix път.

И разбира се, всяко число и последователност от "."е напълно позволено в Unix име на файл, стига друг знак, различен от" / "или"

Разбира се, файловата система, която използвате, може да има различна представа за това, което е допустимо, но вие просто питахте за Unix.

Update:

О, и трябва да се отбележи, че Unix незадайте метода "parse" за имена на файлове. Което всъщност означава, че името на файла се третира като бинарен ключ в ключова база данни за стойности. Това също така означава, че няма такова нещо като "бягство" за имена на Unix файлове.


2 за отговор № 2

POSIX имена на файлове нямат понятие за евакуационни символи.Няма начин да имаш наклонена черта като елемент на име на файл (когато системата изобразява имена на файлове с помощта на Unicode ти може да можете да създадете име на файл, което изглежда да съдържа наклонена черта). Мисля, че всички останали печатни символи са добре, въпреки че използват специални знаци като * и ? в името на файла вероятно ще причини проблеми, когато хората се опитат да ги използват от обвивка.