Witam, jak w nowoczesnym C++23 wyświetlić enumy? Funkcja std::println ich nie wyświetla?
#include <iostream>
#include <print>
enum CardinalDirections {
North = 25,
South,
East,
West
};
int main()
{
std::println("Wyświetlenie kierunków i ich wartości symbolicznych");
std::println("Północ: {}", North);
std::println("Południe: {}", South);
std::println("Wschód: {}", East);
std::println("Zachód: {}", West);
// std::println("Wyświetlenie kierunków i ich wartości symbolicznych");
// std::println("Północ: {}", static_cast<int>(North));
// std::println("Południe: {}", static_cast<int>(South));
// std::println("Wschód: {}", static_cast<int>(East));
// std::println("Zachód: {}", static_cast<int>(West));
CardinalDirections WindDirection = South;
// if (WindDirection == North) {
// std::println("Kierunek wiatru to Północ.");
// } else if (WindDirection == South) {
// std::println("Kierunek wiatru to Południe.");
// } else if (WindDirection == East) {
// std::println("Kierunek wiatru to Wschód.");
// } else if (WindDirection == West) {
// std::println("Kierunek wiatru to Zachód.");
// } else {
// std::println("Nieznany kierunek.");
// }
// std::println("Zmienna WindDirection = {}", WindDirection); // z tym nie działa
std::println("Zmienna WindDirection = {}", static_cast<int>(WindDirection));
return 0;
}
Ok, udało mi się uruchomić ten program, ale w std::cout, nie trzeba było korzystać z instrukcji if else.
#include <iostream>
#include <format> // Użycie head de <format>
enum CardinalDirections {
North = 25,
South,
East,
West
};
int main()
{
std::println("Wyświetlenie kierunków i ich wartości symbolicznych");
std::println("Północ: {}", static_cast<int>(North));
std::println("Południe: {}", static_cast<int>(South));
std::println("Wschód: {}", static_cast<int>(East));
std::println("Zachód: {}", static_cast<int>(West));
CardinalDirections WindDirection = South;
std::println("Zmienna WindDirection = {}", static_cast<int>(WindDirection));
if (WindDirection == North) {
std::println("Kierunek wiatru to Północ.");
} else if (WindDirection == South) {
std::println("Kierunek wiatru to Południe.");
} else if (WindDirection == East) {
std::println("Kierunek wiatru to Wschód.");
} else if (WindDirection == West) {
std::println("Kierunek wiatru to Zachód.");
} else {
std::println("Nieznany kierunek.");
}
return 0;
}
Mam jeszcze takie pytanie skąd pobrać binarne wersje kompilatorów GCC 16 i LLVM 23 / Clang 23?
Stabilne wersje mogę pobrać stąd.
https://github.com/llvm/llvm-project/releases
https://github.com/xpack-dev-tools/gcc-xpack/releases/tag/v15.2.0-1/
Mogę też wykorzystać inny kompilator Circle ale on zatrzymał się na standardzie C++20.
https://www.circle-lang.org/site/download/