LINUX.ORG.RU

Добавление сахарку в C++ для быстрого написания «скриптов»

 ,


1

1

Доброй ночи. Ищу способ добавления ещё большего количества синтаксического сахара в C++, чтобы можно было писать компактные и выразительные небольшие приложения. Скажем, в качестве замены простыни из Perl/Bash/Python.

Допускаю использование любых библиотек, хэдеров, и фреймворков, в том числе и построенных на boost и qt4/qt5 (без GUI).

Типичный юзкейс - перебрать указанные файлы в каталоге, прочитать их содержимое, провести манипуляции с текстом, и сгенерировать результат.

Попытки сделать это через boost (в том числе и boost::filesystem) или через glibc выливаются в лапшу из кода с кучей дополнительных телодвижений.

Вот пример относительно простого способа прочитать конфиги в алфавитном порядке из указанной директории (самым приятным пока рассматриваю вариант с Qt5)

QDir dir(QString::fromStdString(path));
if(!dir.exists()) {
    std::cerr << path << " does not exist\n";
    return 1;
}

for(const QFileInfo &fileinfo : dir.entryInfoList(QDir::Files | QDir::Readable, QDir::Name)) {
    QFile file(fileinfo.absoluteFilePath());
    file.open(QIODevice::ReadOnly);
    if(!file.isOpen()) {
        std::cerr << "Can't open file: " << qPrintable(file.fileName()) << "\nReason: " << qPrintable(file.errorString()) << '\n';
        return 1;
    }
    // ...
}

Тем не менее, я считаю его многословным, ряд действий можно было бы упаковать в обёртки. Писать свою тоже можно, но вдруг уже кто-то сделал подобное.

У кого какие идеи?

★★★★★

Последнее исправление: Chaser_Andrey (всего исправлений: 5)
Ответ на: комментарий от grondek

Умные указатели же, не 90-е на дворе то.

pon4ik ★★★★★
()
Ответ на: комментарий от grondek

Для кучи есть умные указатели, я об этом уже который раз толкую. Вот тебе пример:

std::unique_ptr<Foo> foo(new Foo);

При выходе foo из scope будет автоматическое удаление объекта Foo, созданного в куче.

Chaser_Andrey ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.