170 похожих чатов

А в c++ нет эффективного алгоритма чтобы разбить string на

слова по разделителю ' '? Нужно всегда писать цикл с find и двигать итератор?

15 ответов

21 просмотр

Попробуй ещё через поток сделать stringstream

Станислав-Трухан Автор вопроса
Владимир
Попробуй ещё через поток сделать stringstream

Хотел спросить, а какой overhead от stringstream при этом?

есть рэнжи в С+=20, там есть std::view::split

Станислав Трухан
Хотел спросить, а какой overhead от stringstream п...

Это же получается линейный алгоритм, считываем поток, пока не встретится нужный символ?

std::vector<std::string> split(std::string_view str, std::string_view delim) { std::vector<std::string> result; for (std::string_view word : std::views::split(str, delim)) { result.emplace_back(word); } return result; }

Станислав-Трухан Автор вопроса
Владимир
Это же получается линейный алгоритм, считываем пот...

Линейный это да, но не будет ли лишней копии исходной строки в буфер?

Станислав-Трухан Автор вопроса
Станислав Трухан
Линейный это да, но не будет ли лишней копии исход...

https://en.cppreference.com/w/cpp/io/basic_stringstream/basic_stringstream 3) Uses a copy of str as initial contents of the underlying string device. The underlying basic_stringbuf object is constructed as basic_stringbuf<Char,Traits,Allocator>(str, mode). я про это, то есть будет копия

Sergey Skvortsov
Наивно

да я этот код скопировал

Станислав Трухан
Линейный это да, но не будет ли лишней копии исход...

string line, word; while (std::getline(cin, line)) // initialize line { // move data from line into istream (so it's no longer in line): istringstream istream( std::move( line ) ); while (istream >> word) // parse word here } В интернете пишут, что помочь избавиться от копии поможет move

Sergey Skvortsov
Наивно

а шо там наивного?)

Aleksander Spichak
а шо там наивного?)

Ну это влажные мечты, реальные ренжи неюзабельные (их немного фиксили, но совсем недавно, и там тоже не так будет коротко)

Станислав-Трухан Автор вопроса
Владимир
string line, word; while (std::getline(cin, line))...

о, кстати, да с cxx20 появился move конструктор 6) Move-construct the contents of the underlying string device with str. The underlying basic_stringbuf object is constructed as basic_stringbuf<Char,Traits,Allocator>(std::move(str), mode).

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта