C++
Tarih yardımcıları
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.
Örnek çözümü göster
#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;
}
Kendini test et
-
Çağrıyı çıktısına eşle
- 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"
-
Hangisi ISO 8601 tarih biçimidir?
- "15/03/2024"
- "15-03-2024"
- "03/15/2024"
- "2024-03-15"
Cevabı göster
"2024-03-15" — ISO 8601 biçimi YYYY-MM-DD'dir: 2024-03-15.
-
std::to_string çağrısını tamamla
return std::____(year) + "-" + m + "-" + d;
Cevabı göster
return std::to_string(year) + "-" + m + "-" + d;
Sıradaki ders: Birleştirme