Можно ли проверить строку формата std::vformat только один раз?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Можно ли проверить строку формата std::vformat только один раз?

Сообщение Anonymous »

Я работаю с std::vformat в C++20, и мне нужно несколько раз форматировать строки с использованием одной и той же строки формата. Однако я заметил, что std::vformat, кажется, проверяет и анализирует строку формата каждый раз, когда он вызывается, даже если строка формата одинакова.
Есть ли способ избежать повторного анализа и повторной проверки строки формата при каждом вызове std::vformat? В идеале я хотел бы проверить строку формата только один раз, а затем повторно использовать ее для последующих вызовов форматирования, не создавая при этом дополнительных затрат на ее повторный анализ.
Вот упрощенный пример того, что я делаю:

Код: Выделить всё

#include 
#include 

int main() {
std::string format_str = someRuntimeString + "{}";

// First formatting
std::string result1 = std::vformat(format_str, std::make_format_args(42));

// Second formatting (same format string)
std::string result2 = std::vformat(format_str, std::make_format_args(43));

...

/*

Imaginary code for what I might expect "single-validation" to look like

auto validFormat = std::format_validate(format_str);

std::string result1 = std::vformat(validFormat, std::make_format_args(value));
std::string result2 = std::vformat(validFormat, std::make_format_args(value));

*/

return 0;
}
В этом коде std::vformat анализирует строку формата при каждом вызове. Я хотел бы избежать повторной проверки/компиляции строки формата и использовать ее более эффективно.
Есть ли способ предварительно проверить строку формата и повторно использовать ее без повторного анализа каждый раз? Будем очень признательны за любые предложения или обходные пути.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -only-once
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»