我正在尝试使用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!
答案 0 :(得分:3)
不能这样做。 sscanf
是一个C函数,只能读取基本类型,而不能读取类类型。
在C ++中,用于读/写类类型的枪是“流”,并且有<iostream>
和<sstream>
标题。如果你正在使用的Boost库的作者对这个类重载operator<<
和operator>>
,它们将会起作用。
如果没有,那么你最好的方法是逐个读取日期字段(作为基本类型),然后使用它的构造函数创建一个boost::gregorian::date
对象。