используя sscanf для повышения даты - PullRequest
2 голосов
/ 03 сентября 2011

Я пытаюсь использовать 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*’

Может кто-нибудь предложить мне исправить это.ТНХ!

1 Ответ

3 голосов
/ 03 сентября 2011

Так нельзя сделать.sscanf является функцией C и может читать только примитивные типы, а не типы классов.

В C ++ средства чтения / записи типов классов являются «потоками» и имеют заголовки <iostream> и <sstream>.Они будут работать, если авторы используемой вами библиотеки Boost были достаточно любезны, чтобы перегрузить operator<< и operator>> для этого класса.

Если этого не произошло, то лучше всего прочитатьполя даты (как базовые типы) по одному, а затем создайте объект boost::gregorian::date, используя его конструктор.

...