From 91a2f798e3aa86981cb939464d0858118da645d9 Mon Sep 17 00:00:00 2001 From: Aleksandr Orefkov Date: Sun, 1 Mar 2026 11:15:47 +0300 Subject: [PATCH] Update description --- bench/bench_str.cpp | 7 +++++-- readme.md | 9 +++++---- readme_ru.md | 9 +++++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/bench/bench_str.cpp b/bench/bench_str.cpp index 0e853c4..bb57fbe 100644 --- a/bench/bench_str.cpp +++ b/bench/bench_str.cpp @@ -422,8 +422,11 @@ void StdFormatSize(benchmark::State& state) { for (auto _: state) { for (unsigned i = 1; i <= 100'000; i *= 10) { size_t len = std::formatted_size("abcdefghihklmopqr {:#010o} end", i); - std::string str(len, 0); - std::format_to_n(str.data(), len, "abcdefghihklmopqr {:#010o} end", i); + std::string str; + str.resize_and_overwrite(len, [&](char* p, size_t) { + std::format_to_n(str.data(), len, "abcdefghihklmopqr {:#010o} end", i); + return len; + }); benchmark::DoNotOptimize(str); } } diff --git a/readme.md b/readme.md index 0294c6e..b21d0e5 100644 --- a/readme.md +++ b/readme.md @@ -76,13 +76,14 @@ When using only `#include "simstr/strexpr.h"`: - str::replace - replaces occurrences of the search substring with a replacement string or string expression. If the substring is not found, the string expression is not even evaluated. - str::make_ascii_upper, str::make_ascii_lower - change the case of ASCII characters. -- Parsing integers with the possibility of "fine" tuning at compile time - you can set options for checking overflow, - skipping whitespace characters, a specific radix or auto-selection by prefixes `0x`, `0`, `0b`, `0o`, - the admissibility of the `+` sign. Parsing is implemented for all types of strings and characters. -- Parsing double for `char` and `wchar_t`, as well as character types compatible with them in size. +- Parsing of integers from a "piece of string" (does not require null termination) with the possibility of "fine" tuning during compilation - + you can set options for checking for overflow, skipping whitespace characters, a specific radix, or auto-select by + prefixes `0x`, `0`, `0b`, `0o`, the `+` sign is allowed. Parsing is implemented for all types of strings and characters. +- Parsing double from a "piece of string" for `char` and `char8_t`. When using the full version of the library: - Everything that is listed above, plus +- Parsing double from a "piece of string" for all types of characters. - Additional efficient string objects - `sstring` (shared string), `lstring` (local string). - `lstring` - supports many mutable operations with strings - various replacements, insertions, deletions, etc. Allows you to set the size for the internal character buffer, which can turn *Small String Optimization* into *Big String Optimization* :). diff --git a/readme_ru.md b/readme_ru.md index 04999c2..a2ccdc5 100644 --- a/readme_ru.md +++ b/readme_ru.md @@ -77,13 +77,14 @@ - str::replace - заменяет вхождения искомой подстроки на строку замены или строковое выражение. Если подстрока не найдена, строковое выражение даже не вычисляется. - str::make_ascii_upper, str::make_ascii_lower - смена регистра ASCII символов. -- Парсинг целых чисел с возможностью "тонкой" настройки при компиляции - можно задавать опции проверки переполнения, - пропуск пробельных символов, конкретное основание счисления либо автовыбор по префиксам `0x`, `0`, `0b`, `0o`, - допустимость знака `+`. Парсинг реализован для всех видов строк и символов. -- Парсинг double для `char` и `wchar_t`, а также совместимых с ними по размеру типов символов. +- Парсинг целых чисел из "куска строки" (не требует нуль-терминированности) с возможностью "тонкой" настройки при компиляции - + можно задавать опции проверки переполнения, пропуск пробельных символов, конкретное основание счисления либо автовыбор по + префиксам `0x`, `0`, `0b`, `0o`, допустимость знака `+`. Парсинг реализован для всех видов строк и символов. +- Парсинг double из "куска строки" для `char` и `char8_t`. При использовании полной версии библиотеки: - Всё то же, что и перечислено выше, плюс +- Парсинг double из "куска строки" для всех типов символов. - Дополнительные эффективные строковые объекты - `sstring` (shared string), `lstring` (local string). - `lstring` - поддерживает множество мутабельных операций со строками - различные замены, вставки, удаления и т.п. Позволяет задавать размер для внутреннего буфера символов, что может превращать *Small String Optimization* в *Big String Optimization* :).