Update description

This commit is contained in:
Aleksandr Orefkov 2026-03-01 11:15:47 +03:00
parent c8fb92fee0
commit 91a2f798e3
3 changed files with 15 additions and 10 deletions

View File

@ -422,8 +422,11 @@ void StdFormatSize(benchmark::State& state) {
for (auto _: state) { for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
size_t len = std::formatted_size("abcdefghihklmopqr {:#010o} end", i); size_t len = std::formatted_size("abcdefghihklmopqr {:#010o} end", i);
std::string str(len, 0); std::string str;
str.resize_and_overwrite(len, [&](char* p, size_t) {
std::format_to_n(str.data(), len, "abcdefghihklmopqr {:#010o} end", i); std::format_to_n(str.data(), len, "abcdefghihklmopqr {:#010o} end", i);
return len;
});
benchmark::DoNotOptimize(str); benchmark::DoNotOptimize(str);
} }
} }

View File

@ -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. - 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. 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. - 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, - Parsing of integers from a "piece of string" (does not require null termination) with the possibility of "fine" tuning during compilation -
skipping whitespace characters, a specific radix or auto-selection by prefixes `0x`, `0`, `0b`, `0o`, you can set options for checking for overflow, skipping whitespace characters, a specific radix, or auto-select by
the admissibility of the `+` sign. Parsing is implemented for all types of strings and characters. prefixes `0x`, `0`, `0b`, `0o`, the `+` sign is allowed. 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 double from a "piece of string" for `char` and `char8_t`.
When using the full version of the library: When using the full version of the library:
- Everything that is listed above, plus - 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). - Additional efficient string objects - `sstring` (shared string), `lstring` (local string).
- `lstring` - supports many mutable operations with strings - various replacements, insertions, deletions, etc. - `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* :). Allows you to set the size for the internal character buffer, which can turn *Small String Optimization* into *Big String Optimization* :).

View File

@ -77,13 +77,14 @@
- str::replace - заменяет вхождения искомой подстроки на строку замены или строковое выражение. - str::replace - заменяет вхождения искомой подстроки на строку замены или строковое выражение.
Если подстрока не найдена, строковое выражение даже не вычисляется. Если подстрока не найдена, строковое выражение даже не вычисляется.
- str::make_ascii_upper, str::make_ascii_lower - смена регистра ASCII символов. - str::make_ascii_upper, str::make_ascii_lower - смена регистра ASCII символов.
- Парсинг целых чисел с возможностью "тонкой" настройки при компиляции - можно задавать опции проверки переполнения, - Парсинг целых чисел из "куска строки" (не требует нуль-терминированности) с возможностью "тонкой" настройки при компиляции -
пропуск пробельных символов, конкретное основание счисления либо автовыбор по префиксам `0x`, `0`, `0b`, `0o`, можно задавать опции проверки переполнения, пропуск пробельных символов, конкретное основание счисления либо автовыбор по
допустимость знака `+`. Парсинг реализован для всех видов строк и символов. префиксам `0x`, `0`, `0b`, `0o`, допустимость знака `+`. Парсинг реализован для всех видов строк и символов.
- Парсинг double для `char` и `wchar_t`, а также совместимых с ними по размеру типов символов. - Парсинг double из "куска строки" для `char` и `char8_t`.
При использовании полной версии библиотеки: При использовании полной версии библиотеки:
- Всё то же, что и перечислено выше, плюс - Всё то же, что и перечислено выше, плюс
- Парсинг double из "куска строки" для всех типов символов.
- Дополнительные эффективные строковые объекты - `sstring` (shared string), `lstring` (local string). - Дополнительные эффективные строковые объекты - `sstring` (shared string), `lstring` (local string).
- `lstring` - поддерживает множество мутабельных операций со строками - различные замены, вставки, удаления и т.п. - `lstring` - поддерживает множество мутабельных операций со строками - различные замены, вставки, удаления и т.п.
Позволяет задавать размер для внутреннего буфера символов, что может превращать *Small String Optimization* в *Big String Optimization* :). Позволяет задавать размер для внутреннего буфера символов, что может превращать *Small String Optimization* в *Big String Optimization* :).