2014-01-04 6 views
0

Я пытаюсь реализовать в программе код для печати языкового времени в C++, указанный в How to get current time and date in C++?.Внедрение времени форматирования времени локали

Я сделал некоторую поправку, чтобы адаптировать код к моему заголовку, но он все еще дает мне ошибку «Метод« put »не может быть разрешен». Я новичок, поэтому я не мог найти ответа. Я нахожусь на Eclipse. Я установил число масштабируемости редактора в 50000. Также файл имеет другой класс между включениями и кодом.

Код это:

#ifndef LISTA_H_ 
#define LISTA_H_ 

#include "nodel.h" 
#include "hntable.h" 

#include <iostream> 
#include <string> 
#include <iterator> 
#include <time.h> 

using namespace std; 

class timefmt 
{ 
public: 
    timefmt(std::string fmt) 
     : format(fmt) { } 

    friend ostream& operator <<(ostream &, timefmt const &); 

private: 
    string format; 
}; 


std::ostream& operator <<(std::ostream& os, timefmt const& mt) 
{ 
    std::ostream::sentry s(os); 

    if (s) 
    { 
     time_t t = time(0); 
     tm const* tm = localtime(&t); 
     ostreambuf_iterator<char> out(os); 

     use_facet<time_put<char>>(os.getloc()) 
      .put(out, os, os.fill(), 
       tm, &mt.format[0], &mt.format[0] + mt.format.size()); 
    } 

    os.width(0); 

    return os; 
} 

#endif /* LISTA_H_ */ 

Edit: Если я включаю "локаль" ошибка ранее шоу решена, но: множественное определение `оператора < < (станд :: ostream &, timefmt Const &) '. Любые намеки об этом?

+1

У вас есть много ошибок на вашем коде ..... вы проводки весь код? Я не вижу «tm» type defintion/declaration, просто взглянув на него. – Miguel

+0

@Miguel 'tm' [определяется в стандартной библиотеке] (http://www.cplusplus.com/reference/ctime/tm/) –

+0

@IgorTandetnik Я не знал, что даже существовал Я думал, что это пользовательский интерфейс, который он забыл объявить. Спасибо хоть. – Miguel

ответ

1

#include <locale> Просто добавьте, и код compiles

+0

Теперь у него нет проблем с put, но «множественное определение« operator << (std :: ostream &, timefmt const &) ». Любой намек на это? – B3bis

+0

Не задавайте функции в заголовках. Объявите их там, определите их точно в одном исходном файле. –

Смежные вопросы