Какой наиболее эффективный способ прочитать первое число из потока и пропустить данные до разделителя?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Какой наиболее эффективный способ прочитать первое число из потока и пропустить данные до разделителя?

Сообщение Anonymous »

Я хочу читать только первое число в каждой строке, разделенной \n, и пропускать остальные данные. Пример:
123 123 456 asdf\n234 ewdwedwed должен быть преобразован, например, в вектор со значениями {123, 234.
Моя первая попытка — следующий фрагмент:int main()
{
std::stringstream ss { "123 123 456 asdf\n234 ewdwedwed" };
std::vector values;
int value;
std::string skip;
while (ss >> value) {
values.push_back(value);
std::getline(ss, skip);
}

return 0;
}

Но мне интересно, действительно ли getline скопирует данные во временную строку. В таком случае он будет выполнять ненужное копирование и потреблять больше памяти, чем необходимо. Я прав? Следует ли заменить getline какими-либо методами peek и ignore:
while (ss >> value) {
values.push_back(value);
while (ss.peek() != '\n'){
ss.ignore();
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... data-until
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»