使用sscanf进行提升日期

时间:2011-09-03 16:36:35

标签: c++ boost-date-time

我正在尝试使用sscanf来分隔具有提升日期的字符串。这是代码:

 std::sscanf(ss.c_str(),"%ls\t%lf\t%lf",&date1_,&num1_,&num2_);

我收到以下错误:

 warning: format ‘%ls’ expects type ‘wchar_t*’, but argument 3 has type ‘boost::gregorian::date*’

任何人都可以建议我解决这个问题。 THX!

1 个答案:

答案 0 :(得分:3)

不能这样做。 sscanf是一个C函数,只能读取基本类型,而不能读取类类型。

在C ++中,用于读/写类类型的枪是“流”,并且有<iostream><sstream>标题。如果你正在使用的Boost库的作者对这个类重载operator<<operator>>,它们将会起作用。

如果没有,那么你最好的方法是逐个读取日期字段(作为基本类型),然后使用它的构造函数创建一个boost::gregorian::date对象。