Доброй ночи. Ищу способ добавления ещё большего количества синтаксического сахара в 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;
}
// ...
}
Тем не менее, я считаю его многословным, ряд действий можно было бы упаковать в обёртки. Писать свою тоже можно, но вдруг уже кто-то сделал подобное.
У кого какие идеи?