我想得到年 - 月 - 小时:分:秒.分数(2位数),如果我使用"%Y-%m-%d%H:%M:%S.%f",我几乎得到了什么我想要秒的分数(最后一部分)的异常,它在我的Windows XP上显示6位数,我不知道如何获得2位数,任何想法?
我在win32程序@ windows 7机器上使用代码"boost :: call_traits :: param_type".令我惊讶的是,它不是"双重"而是"常数双倍".
我认为所有原始类型都很好地使用"按值传递"的函数参数,这不是常识吗?因为很多人会使用is_pod来确定是否使用引用,不是吗?
我想将多线程应用程序登录到控制台和文件,日志行应如下所示:
2011-07-18 14:48:51.849 100 核心 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++模板来检查函数是否存在?
说有两个类:
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()来区分它们',我该怎么做?
如果有class T{ void M() };,我希望有一个模板类可以T::M用作模板参数.说这样的话:
T t;
TUser<T::M> user(t);
Run Code Online (Sandbox Code Playgroud)
可能吗?
c++ ×4
boost ×3
logging ×2
boost-log ×1
compile-time ×1
format ×1
parameters ×1
templates ×1
timestamp ×1