小编JQ.*_*JQ.的帖子

如何自定义Boost.Log的"TimeStamp"格式

我想得到年 - 月 - 小时:分:秒.分数(2位数),如果我使用"%Y-%m-%d%H:%M:%S.%f",我几乎得到了什么我想要秒的分数(最后一部分)的异常,它在我的Windows XP上显示6位数,我不知道如何获得2位数,任何想法?

format logging boost timestamp boost-log

13
推荐指数
1
解决办法
6355
查看次数

为什么boost :: call_traits <double> :: param_type是"const double&",而不是"double"

我在win32程序@ windows 7机器上使用代码"boost :: call_traits :: param_type".令我惊讶的是,它不是"双重"而是"常数双倍".

我认为所有原始类型都很好地使用"按值传递"的函数参数,这不是常识吗?因为很多人会使用is_pod来确定是否使用引用,不是吗?

c++ parameters boost

6
推荐指数
1
解决办法
318
查看次数

将 boost::log 用于具有额外“channel”和“id”属性的多线程应用程序的最佳方法是什么

我想将多线程应用程序登录到控制台和文件,日志行应如下所示:

2011-07-18 14:48:51.849 100 核心 W:消息

  1. 100 是唯一标识
  2. 'CORE' 是一个通道,我可以有更多的通道,例如 DATA、NETWORK。
  3. 'W' 表示警告

目前我尝试过,大致:

boost::log::sources::severity_logger< Severity > sevlogger;

enum Channel{Core, ...};
attrChannel.reset(new boost::log::attributes::mutable_constant< Channel >(Core));
boost::log::core::get()->add_global_attribute( "Channel", *attrChannel);
...
//similar to id
...
//file sink:
typedef boost::log::sinks::synchronous_sink< boost::log::sinks::text_file_backend > FileSinkType;
fileSink.reset( new FileSinkType( boost::log::keywords::file_name = fileName ));
fileSink->locked_backend()->set_formatter( format );
boost::log::core::get()->add_sink( fileSink );
...
//similar thing for console sink
...

//LOG Macro
#define LOG( ch, message )\
    {\
       if( ::Logging::initialized )\
        {\
            boost::mutex::scoped_lock _(::Logging::loggerMutex);\
            unsigned int logID = ::Logging::IncrementLogID();\
            ::Logging::attrChannel->set(::Logging::ch);\ …
Run Code Online (Sandbox Code Playgroud)

c++ logging boost

5
推荐指数
1
解决办法
3122
查看次数

如何在编译时判断类是否包含某个成员函数

可能重复:
是否可以编写C++模板来检查函数是否存在?

说有两个类:

struct A{ int GetInt(){ return 10; } };
struct B{ int m; };
Run Code Online (Sandbox Code Playgroud)

我想在以下函数中使用类型A或B的对象

tempate< typename T >
int GetInt( const T & t )
{
   //if it's A, I'll call: return t.GetInt();
   //if its' B, I'll call: return t.m;
}
Run Code Online (Sandbox Code Playgroud)

现在,因为有一大堆类,一些包含GetInt(),一些不包含,我不想为每种类型编写特化,我只想在编译时通过' 包含GetInt()来区分它们',我该怎么做?

c++ member-functions compile-time

4
推荐指数
2
解决办法
1099
查看次数

我们可以使用MemberFunction类型作为模板参数吗?

如果有class T{ void M() };,我希望有一个模板类可以T::M用作模板参数.说这样的话:

T t;
TUser<T::M> user(t);
Run Code Online (Sandbox Code Playgroud)

可能吗?

c++ templates member-functions

2
推荐指数
1
解决办法
52
查看次数