Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm tổng số năm riêng biệt từ một chuỗi trong Chương trình C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình tìm các năm riêng biệt trong chuỗi đã cho. Hãy xem một số ví dụ. Chúng tôi giả định định dạng ngày là DD / MM / YYYY .

Đầu vào - Ví dụ mẫu với các ngày 01/11/2020, 02/12/2020 và 03/10/2019.

Đầu ra - 2

Chúng ta có hai năm rõ ràng trong văn bản nhất định là 2020 và 2019.

Chúng tôi sẽ sử dụng regex để trích xuất tất cả các ngày từ chuỗi đã cho. Nếu bạn chưa quen với regex trong C ++, hãy xem qua hướng dẫn này.

Hãy bắt tay vào giải quyết vấn đề.

  • Khởi tạo văn bản.

  • Viết regex để trích xuất ngày tháng từ văn bản.

  • Khởi tạo một tập hợp trống không có thứ tự.

  • Lặp lại các ngày và thêm năm vào nhóm không có thứ tự để tìm các năm duy nhất.

  • In độ dài của tập hợp.

Ví dụ

Hãy xem mã.

#include <iostream>
#include <bits/stdc++.h>
#include <regex>
using namespace std;
int uniqueYearsCount(string text) {
   // regex
   regex date_regex("[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}");
   smatch matching_date;
   // set to store unique dates
   unordered_set<string> dates;
   // finding all dates
   while (regex_search(text, matching_date, date_regex)) {
      string date = matching_date[0];
      dates.insert(date.substr(date.size() - 4));
      text = matching_date.suffix();
   }
   return dates.size();
}
int main() {
   string text = "Sample example with dates 01/11/2020, 02/12/2020, and 03/10/2019.";
   cout << uniqueYearsCount(text) << endl;
   return 0;
}

Đầu ra

Nếu chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.

2

Chúng tôi có thể lấy ngày ở các định dạng khác nhau. Nếu bạn nhận được ngày ở các định dạng khác nhau, thì hãy cập nhật regex một cách thích hợp.

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.