2

我正在尝试使用 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*’

谁能建议我解决这个问题。谢谢!

4

1 回答 1

3

不能这样做。sscanf是一个 C 函数,只能读取原始类型,不能读取类类型。

在 C++ 中,用于读取/写入类类型的武器是“流”,并进入<iostream>标题<sstream>。如果您正在使用的 Boost 库的作者对重载operator<<operator>>这个类足够友好,它们就会起作用。

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

于 2011-09-03T16:43:31.947 回答