Чтение отформатированных строк из stringstream

Для загрузки большого количества вершин из текстового файла я загружаю весь файл в память, а затем я хотел бы отсканировать каждую строку на наличие трех чисел с плавающей запятой. Следующие работы, но я хотел бы знать, хорошо это или расточительно.

std::stringstream sstr;
sstr << file.rdbuf();    // file is an ifstream

for (uint i=0; i<num_verts; ++i)
{
    sstr.getline(line, bufsz);
    std::istringstream iss(line);
    iss >> verts[i].x >> verts[i].y >> verts[i].z;
}

На справочном сайте cplusplus.com я нашел следующее дляistringstream:

(2) Конструктор инициализации: Создает объект istringstream с копией str в качестве содержимого.

Так что еслиistringstream действительно копирует каждую строку при создании, тогда это очень расточительно, тем более, что у меня уже есть поток строк во-первых.

По сравнению сsscanfвышеупомянутое действительно довольно медленно: 1,94 секунды против 0,56 сsscanf.

Копируется ли строка при инициализацииiss?

Как можно прочитать отформатированные значения, одновременно продвигаясь по строке по строке только с потоком строк?

Или менее конкретно: какой метод C ++ для описанного выше случая одинаково хорошо работает, какsscanf?

Ответы на вопрос(1)

Ваш ответ на вопрос