我试图在程序中实现在How to get current time and date in C++?中给出的用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_ */
编辑:如果我包含“locale”,之前显示的错误已解决但是: `operator&lt;&lt;(std :: ostream&amp;,timefmt const&amp;)'的多重定义。 有关于此的任何提示吗?