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

Гм, товарищи, а чем б заменить sscanf в "новом модном"

С++?

23 ответов

18 просмотров

В старом вонючем на stringstream. В новом модном модно брать внешние либы. Гуглится scnlib

🐈- Автор вопроса
Artöm Bakri Al-Sarmini
В старом вонючем на stringstream. В новом модном м...

мы проверили эту scnlib и уверены, что в ней не живёт UB? Мы доверяем свой продукт (пусть и какую-то домашнюю поделку, окей), некоему 20-летнему фину?

🐈
мы проверили эту scnlib и уверены, что в ней не жи...

Ты либо берешь готовую библиотеку, либо ::scanf, либо пишешь сам. Так всегда было

🐈- Автор вопроса
Alexander Karaev
если тебе чиселки парсить, то from_chars

Мне 1 раз в одном месте распарсить "%u-%u-%u" тащить ради такого удовольствия дополнительную либу - это сильно

🐈- Автор вопроса
Dmitriy [Отпуск]
Та возьми sscanf, в чем проблема?)

в том что я за каким-то лешим переделал std::string на std::string_view. sscanf c ним плохо дружит. вообще проблема решена путём создания временного std::string, нооо.... хочется "правильнее"

🐈
в том что я за каким-то лешим переделал std::strin...

У string_view ведь есть метод data(), который возвращает const char*

Dmitriy [Отпуск]
А нуль-терминатор есть?))

strlen работает, значит должен быть

Kirill 🚜
У string_view ведь есть метод data(), который возв...

Он необзятельно вернёт нультерминированную строку

🐈- Автор вопроса
Danya🔥
Он необзятельно вернёт нультерминированную строку

я так понимаю, она будет нультерминированной, если это была "последняя" или "единственная переданная строка" Если же я деребаню длинную строку по каким-то токенам в string_view то в data() у меня будет "строка" от нужного места и до конца оригинальной строки

Danya🔥
Он необзятельно вернёт нультерминированную строку

Если он был создан из std string - то вернёт. Я так понял, у @ChuviW до этого были как раз std string

Kirill 🚜
Если он был создан из std string - то вернёт. Я та...

Ну это не значит, что он не использует методы, которые могут убрать нуль

🐈- Автор вопроса
Kirill 🚜
Если он был создан из std string - то вернёт. Я та...

у меня деребанивалка строки принимала std::string и возвращала вектор из std::string теперь она принимает string_view и возвращает вектор из string_view.

🐈
у меня деребанивалка строки принимала std::string ...

Так чем для чисел не подходит from_chars?

Kirill 🚜
strlen работает, значит должен быть

не значит, никто его там не обещает

🐈
у меня деребанивалка строки принимала std::string ...

ты можешь работать и со string_view: #include <charconv> #include <iostream> #include <regex> #include <string_view> int to_int(const std::sub_match<std::string_view::const_iterator>& sm) { int d; std::from_chars(sm.first, sm.second, d); return d; } int main() { std::regex r{"(\\d+)-(\\d+)-(\\d+)"}; std::string_view sv{"10-20-30"}; std::match_results<std::string_view::const_iterator> m; if( std::regex_match(sv.begin(), sv.end(), m, r) ) { int a = to_int(m[1]); int b = to_int(m[2]); int c = to_int(m[3]); std::cout << a << '-' << b << '-' << c << std::endl; } }

🐈- Автор вопроса

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта