Der folgende Code gibt unterschiedliche Ergebnisse mit dem G ++ 7-Compiler und Apple Clang ++. Habe ich einen Fehler bei der Ausrichtung der Bool-Ausgabe festgestellt, wenn std::boolalpha
verwendet wurde, oder habe ich einen Fehler gemacht?Warum ignoriert std :: boolalpha die Feldbreite bei der Verwendung von clang?
#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>
template<typename T>
void print_item(std::string name, T& item) {
std::ostringstream ss;
ss << std::left << std::setw(30) << name << "= "
<< std::right << std::setw(11) << std::setprecision(5)
<< std::boolalpha << item << " (blabla)" << std::endl;
std::cout << ss.str();
}
int main() {
int i = 34;
std::string s = "Hello!";
double d = 2.;
bool b = true;
print_item("i", i);
print_item("s", s);
print_item("d", d);
print_item("b", b);
return 0;
}
Der Unterschied ist:
// output from g++ version 7.2
i = 34 (blabla)
s = Hello! (blabla)
d = 2 (blabla)
b = true (blabla)
// output from Apple clang++ 8.0.0
i = 34 (blabla)
s = Hello! (blabla)
d = 2 (blabla)
b = true (blabla)
Was war der Unterschied? Danke Chiel für die Aktualisierung. Ich kann auch mit Clang 6 reproduzieren. – gsamaras
ausdrucken auch in Frage stellen. Ergebnisse schreiben: – saeed
@gsamaras. Ich habe das Beispiel etwas bearbeitet, um besser zu zeigen, was schief läuft. – Chiel