2015-05-10 1 views
-1

У меня есть приложение на C++, которое я разрабатываю, где мне просто нужно проверить, находится ли дата текущего дня в массиве символов, в частности, в формате «2015-05-10». Я довольно новичок в C++, выходящей из PHP, где это очень легко сделать, но я изо всех сил пытаюсь найти хороший метод на C++. Это должно быть автоматизировано, поскольку скрипт запускается ежедневно на задании cron. Таким образом, этот процесс составляет:C++ - Как проверить, является ли сегодняшняя дата строкой?

If (today's date is in char array) { 
do this } 
else { 
do nothing 
} 

Редактировать: Я, очевидно, бесполезен в выражении своих проблем, извините!

Мои основные вопросы:

  1. Как получить дату текущего дня в хорошей простой строки в этом формате - 2015-05-10

  2. Как тогда проверить, если char, который я сохранил (который, как я знаю, содержит дату среди другого текста), содержит дату текущего дня (которую я буду, когда знаю, сохранил как строку).

+0

Там же [ 'STD :: regex'] (http://en.cppreference.com/w/cpp/regex/basic_regex) для достижения таких проверок формата. –

+0

«проверьте, соответствует ли дата текущего дня в массиве символов», вы наверняка знаете, что из-за того, откуда вы получаете дату, и тип возврата не изменился. – cmannett85

+0

@ cmannett85 массив char хранит ответ от другого сервера (ответ содержит другой текст вместе с датой), и в тот же момент через 24 часа будет изменяться от даты старения до текущей даты. Поэтому, когда я получаю новый ответ, мне нужно проверить, содержит ли он сегодняшнюю дату, и действовать соответствующим образом. – Tim

ответ

0

Если я правильно понял, ваш первый хочет конвертировать текущую дату в формат yyyy-mm-dd, а затем искать строку в другой строке.

Для первого вопроса вы можете обратиться к How to get current time and date in C++?, где представлено несколько решений. Что касается второй части вопроса, если вы используете строки, вы должны использовать найти метод (http://www.cplusplus.com/reference/string/string/find/), и если вы используете массивы символов, вы можете использовать метод C strstr (http://www.cplusplus.com/reference/cstring/strstr/). Вот что я пробовал:

 #include <iostream> 
     #include <string> 
     #include <cstdio> 
     #include <ctime> 
     #include <cstring> 

    time_t  now = time(0); 
    struct tm tstruct; 
    char  buf[100]; 
    tstruct = *localtime(&now); 
    strftime(buf, sizeof(buf), "%Y-%m-%d", &tstruct); 

    //char arrays used 
    char ch_array[] = "This is the received string 2015-05-10 from server"; 
    char * pch; 
    pch = strstr(ch_array, buf); 
    if (pch != nullptr) 
     std::cout << "Found"; 

    //string used 
    std::string str("This is the received string 2015-05-10 from server"); 
    std::size_t found = str.find(buf); 
    if (found != std::string::npos) 
     std::cout << "date found at: " << found << '\n'; 
Смежные вопросы