Я хочу читать только первое число в каждой строке, разделенной \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
Какой наиболее эффективный способ прочитать первое число из потока и пропустить данные до разделителя? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Эффективный способ найти первое появление элемента в словаре наборов [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-