2011-09-03 5 views
2

Я пытаюсь использовать sscanf для разделения строки с датой форсирования. вот код:using sscanf for boost date

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*’ 

кто может предложить мне исправить это. спасибо!

+0

Любые конкретные причины, по которым поток IO не может быть использован? Это так просто, как 'istringstream (ss) >> date1 >> num1 >> num2' – Cubbi

+0

Я тоже могу попробовать это – itcplpl

+0

@Cubbi, это не работает .... как сказал Кос, он ищет перегруженного оператора >> – itcplpl

ответ

3

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

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

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

+0

получил его ... Я попробую это. – itcplpl

+0

Я использовал токенизатор повышения и решил проблему – itcplpl