Хорошей идеей создать интерфейс ввода -вывода ввода -вывода?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Хорошей идеей создать интерфейс ввода -вывода ввода -вывода?

Сообщение Anonymous »

спрашивать здесь, исключительно из -за беспокойства по поводу безопасности, практичности и переносимости; Мнения приветствуются, но второстепенные.
В течение некоторого времени я работал с определением независимого от платформы слоя абстракции ввода/вывода файла с использованием std :: fileystem . Не описывая слишком много, я изложу общие идеи дизайна ad Vorbatim: < /p>
namespace fileio
{
// Opaque handles
struct Directory;
struct File;
struct FileModeFlag
{
enum flags : unsigned int {
read = 0x0001u,
write = 0x0002u,
trunc = 0x0004u,
append = 0x0008u,
binary = 0x0010u };
};
using FileModeFlags = unsigned int;

// examples of directory functions
Directory* directory_open(std::string_view dir);
Directory* subdirectory_open(const Directory* dir, std::string_view subdir);
Directory* subdirectory_open(const Directory* dir, std::string_view subdir1, std::string_view subdir2);
void directory_close(Directory* dir);
std::string_view directory_get_path(const Directory* dir);
std::string directory_get_path(const Directory* dir, std::string_view filename);

// examples of file functions
bool file_exists(const Directory* dir, std::string_view filename);
File* file_open(const Directory* dir, std::string_view filename, FileModeFlag flags);
}
< /code>
Реализация следует за этой общей идеей: < /p>
struct Directory
{
uint64_t id;
fs::path handle;
};
struct File
{
uint64_t id;
uint64_t size;
std::fstream handle;
// TODO: Store a filename? `std::string filename;`, which is _not_ the entire path!
};
< /code>
Эта идея реализована в моей библиотеке Vtek с открытым исходным кодом. Я знаю, что это работает, мне нравится использовать его, но я не уверен, что это хорошая идея . Возможно, откройте каталог, а затем добавьте в него файлы в цикл предсказуемым образом. Все при скрытии сепаратора платформы за интерфейсом каталога безопасного в использовании. Я не уверен, как решить это лучше всего, или, если это причина, по которой большинство кодов ввода -вывода файла, как правило, просто использует (полностью квалифицированные) пути файлов.
Спасибо за любую информацию!

Подробнее здесь: https://stackoverflow.com/questions/797 ... -like-this
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»