Tarih yardımcıları
- C++ kursu
- Orta seviye
- Ders 22/116
- 6 dk
Tarih işleme fonksiyonlarını eklersin.
Tarih yardımcıları
Üçüncü yardımcımız bir tarih biçimlendirici: formatDate. Bu metod yıl, ay ve gün değerlerini alıp YYYY-MM-DD biçiminde bir dize döndürür. ISO 8601 standardına uyan bu biçim, veri alışverişinde yaygındır.
Örnek: static std::string formatDate(int year, int month, int day). Gövdesinde std::to_string ile sayıları dizeye çeviririz. Ay ve gün tek haneliyse başına sıfır ekleriz: "0" + std::to_string(month). Sonuç: Helpers::formatDate(2024, 3, 15) çağrısı "2024-03-15" döndürür. Bu metod, log kayıtları ve raporlar için kullanışlıdır.
std::to_string ile dönüşüm
Bir int değerini dizeye çevirmek için std::to_string kullanılır. Örnek: std::to_string(2024) ifadesi "2024" döndürür. Dizeleri + ile birleştirebilirsin.
Ay ve gün için tek haneli durumlarda sıfır eklemek gerekir. Mantık: std::string m = std::to_string(month); if (m.length() == 1) m = "0" + m;. Böylece 3 → "03", 12 → "12" olur. Son olarak parçaları tirele birleştiririz: std::to_string(year) + "-" + m + "-" + d. Bu, deterministik bir çıktı üretir.
Uygulama formatDate metodunu ekle ve çağır
Önceki dersin çözümünü al (Helpers sınıfında capitalize ve clamp var). public: altına static std::string formatDate(int year, int month, int day) metodunu ekle. Gövdesinde ay ve gün için tek haneliyse sıfır ekle ve std::to_string(year) + "-" + m + "-" + d döndür. main içinde clamp çağrısından sonra std::cout << std::endl << Helpers::formatDate(2024, 3, 15); ekle.
Başlangıç kodu
#include <iostream>
#include <string>
#include <cctype>
class Helpers {
public:
static std::string capitalize(std::string text) {
if (text.empty()) return text;
text[0] = std::toupper(text[0]);
return text;
}
static int clamp(int value, int min, int max) {
if (value < min) return min;
if (value > max) return max;
return value;
}
};
int main() {
std::cout << "Hazır" << std::endl;
std::cout << Helpers::capitalize("merhaba") << std::endl;
std::cout << Helpers::clamp(15, 0, 10);
// formatDate metodunu ekle ve çağır
return 0;
}Örnek çözüm
#include <iostream>
#include <string>
#include <cctype>
class Helpers {
public:
static std::string capitalize(std::string text) {
if (text.empty()) return text;
text[0] = std::toupper(text[0]);
return text;
}
static int clamp(int value, int min, int max) {
if (value < min) return min;
if (value > max) return max;
return value;
}
static std::string formatDate(int year, int month, int day) {
std::string m = std::to_string(month);
if (m.length() == 1) m = "0" + m;
std::string d = std::to_string(day);
if (d.length() == 1) d = "0" + d;
return std::to_string(year) + "-" + m + "-" + d;
}
};
int main() {
std::cout << "Hazır" << std::endl;
std::cout << Helpers::capitalize("merhaba") << std::endl;
std::cout << Helpers::clamp(15, 0, 10) << std::endl;
std::cout << Helpers::formatDate(2024, 3, 15);
return 0;
}Beklenen çıktı
Hazır Merhaba 10 2024-03-15
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Çağrıyı çıktısına eşle
| Kavram | Anlamı |
|---|---|
formatDate(2024, 3, 15) |
"2024-03-15" |
formatDate(2024, 12, 1) |
"2024-12-01" |
formatDate(2024, 1, 5) |
"2024-01-05" |
formatDate(2024, 10, 25) |
"2024-10-25" |
2 Hangisi ISO 8601 tarih biçimidir?
- "15/03/2024"
- "15-03-2024"
- "03/15/2024"
- "2024-03-15" Doğru cevap
Açıklama: ISO 8601 biçimi YYYY-MM-DD'dir: 2024-03-15.
3 std::to_string çağrısını tamamla
return std::____(year) + "-" + m + "-" + d;
return std::to_string(year) + "-" + m + "-" + d;
Açıklama: std::to_string sayıyı dizeye çevirir.