Форматирование строки ГГГГММДД как ГГГГ.ММ.ДД с использованием Boost - PullRequest
1 голос
/ 21 ноября 2011

У меня есть std::string, например 20040531, я хочу отформатировать его как 2004.05.31.

Помимо прямого способа сделать std::insert в соответствующих местах, есть ли лучший способ сделать это с помощью Boost?

PS. Я не могу использовать другие вызовы Boost для получения даты / времени, так как эта строка возвращается через пользовательский API. Так что этот вопрос сводится к базовому форматированию строк, что может показаться неинтересным, но я пытаюсь изучить Boost.

1 Ответ

3 голосов
/ 21 ноября 2011

Вы можете использовать boost :: format ...

#include <string> 
#include "boost/format.hpp"
#include <iostream>

int main()
{
    std::string a("20040531");
    std::cout << boost::format("%1%.%2%.%3%") 
                    % a.substr(0,4) % a.substr(4,2) % a.substr(6,2);
}

Вы специально спрашивали об этом с помощью Boost, но если вы хотите сделать это в C ++, не вводя зависимостина Boost, вы можете просто использовать поток для достижения того же:

#include <sstream>
#include <string>
#include <iostream>

int main()
{
    std::stringstream s;
    std::string a("20040531");
    s << a.substr(0,4) << '.' << a.substr(4,2) << '.' << a.substr(6,2);
    std::cout << s.str();
}
...