printf("%s - %s - %s", data[0].c_str(), data[1].c_str(), data[2].c_str() );
Обратите внимание, что вы должны преобразовать строки в стиле C - printf не может сделать это за вас.
Редактировать: В ответ на ваш пересмотренный вопрос, я думаю, вам придется проанализировать строку формата самостоятельно, так как вам придется проверить ее. printf () не сделает эту работу.