The truth is rarely pure and never simple

boost::program_options und die Zeilenlänge

boost::program_options ist recht hilfreich, hat aber eine merkwürdige Standardformatierung bei der Ausgabe – hier ein Beispiel aus einer aktuellen Beta-Anwendung:

boost::program_options in der Standard-Formatierung
boost::program_options in der Standard-Formatierung

Die Beschränkung von 80 Zeichen pro Zeile ist konservativ gewählt und nachvollziehbar, wenngleich nicht immer nötig. Darüberhinaus sind unterschiedliche Gruppen (options_description) unterschiedlich formatiert, was die ohnehin eingeschränkte Übersichtlichkeit nicht gerade verbessert. Mit kleinen Änderungen lässt sich jedoch die Ausgabe deutlich lesbarer gestalten:

    options_description stats("statistics mode options", 150, 149);
    stats.add_options()
        ("average,d", value(&settings->average)->default_value(500), "    \tnumber of optimization runs used for averaging\n");

Die beiden Zahlen am Ende der ersten Zeile definieren die Zeilenlänge und die Minimalbreite für die Spalte mit den Beschreibungen. Ist die zweite Zahl nur um eins kleiner als die erste, wird boost die Beschreibung in eine neue Zeile einfügen, statt sie neben den Parametern aufzuführen. (Für Neugierige: die Differenz von einem Zeichen muss sein, weil sonst durch das Leerzeichen Schwierigkeiten entstünden.) Die vier Leerzeichen in der Parameterbeschreibung sorgen für die optische Linie; der Tabulator ist nötig, weil sonst umgebrochene Zeilen nicht eingerückt werden würden und der Zeilenumbruch am Ende schiebt die Parameter weiter auseinander – leider gibt es keine einfache Möglichkeit, plattformübergreifend Farbe auf die Konsole zu zaubern, ohne eine weitere Bibliothek als Abhängigkeit einzufügen. Insgesamt sieht das dann so aus:

boost::program_options in abgewandelter Formatierung
boost::program_options in abgewandelter Formatierung