Size: a a a

2020 December 17

IZ

Ilia Zviagin in pro.cxx
Сергей Чурмин
Друзья вопрос тупой но задам) а вот у нас у строки есть метод arg, а в нем как в питоне можно задавать имена аргументов
"SOME String ard %name, %soname".arg(....)
или может быть есть вариант, а то циферное обочзначение %1 крайне не удобна?
Нет такого метода.
источник

СЧ

Сергей Чурмин... in pro.cxx
хм, блин плохо, ладно буду изобрать вилосепед тогда
источник

IZ

Ilia Zviagin in pro.cxx
Сергей Чурмин
Друзья вопрос тупой но задам) а вот у нас у строки есть метод arg, а в нем как в питоне можно задавать имена аргументов
"SOME String ard %name, %soname".arg(....)
или может быть есть вариант, а то циферное обочзначение %1 крайне не удобна?
Есть boost::format всегда.
источник

AT

Alexander Tulikov in pro.cxx
Сергей Чурмин
Друзья вопрос тупой но задам) а вот у нас у строки есть метод arg, а в нем как в питоне можно задавать имена аргументов
"SOME String ard %name, %soname".arg(....)
или может быть есть вариант, а то циферное обочзначение %1 крайне не удобна?
You can pass named arguments with fmt::arg:

fmt::print("Hello, {name}! The answer is {number}. Goodbye, {name}.", fmt::arg("name", "World"), fmt::arg("number", 42));

https://fmt.dev/latest/index.html
источник

СЧ

Сергей Чурмин... in pro.cxx
Alexander Tulikov
You can pass named arguments with fmt::arg:

fmt::print("Hello, {name}! The answer is {number}. Goodbye, {name}.", fmt::arg("name", "World"), fmt::arg("number", 42));

https://fmt.dev/latest/index.html
thx
источник

D

Danya in pro.cxx
Alexander Tulikov
You can pass named arguments with fmt::arg:

fmt::print("Hello, {name}! The answer is {number}. Goodbye, {name}.", fmt::arg("name", "World"), fmt::arg("number", 42));

https://fmt.dev/latest/index.html
Эх, было бы классно, если можно было user defined literal'ы делать так:
{"Key", "Val"}_arg
источник

AT

Alexander Tulikov in pro.cxx
Danya
Эх, было бы классно, если можно было user defined literal'ы делать так:
{"Key", "Val"}_arg
If your compiler supports C++11 user-defined literals, the suffix _a offers an alternative, slightly terser syntax for named arguments:

using namespace fmt::literals;
fmt::print("Hello, {name}! The answer is {number}. Goodbye, {name}.", "name"_a="World", "number"_a=42);
источник

D

Danya in pro.cxx
Alexander Tulikov
If your compiler supports C++11 user-defined literals, the suffix _a offers an alternative, slightly terser syntax for named arguments:

using namespace fmt::literals;
fmt::print("Hello, {name}! The answer is {number}. Goodbye, {name}.", "name"_a="World", "number"_a=42);
О так даже лучше
источник

ПК

Побитый Кирпич... in pro.cxx
Danya
О так даже лучше
Ещё лучше было бы просто:
const std::string name = "World";
const int number = 42;
print(f"Hello, {name}! The answer is {number}. Goodbye, {name}.");
Надеюсь, доживу.
источник

D

Danya in pro.cxx
Побитый Кирпич
Ещё лучше было бы просто:
const std::string name = "World";
const int number = 42;
print(f"Hello, {name}! The answer is {number}. Goodbye, {name}.");
Надеюсь, доживу.
Фантазёр))
источник

S

Stas in pro.cxx
Побитый Кирпич
Ещё лучше было бы просто:
const std::string name = "World";
const int number = 42;
print(f"Hello, {name}! The answer is {number}. Goodbye, {name}.");
Надеюсь, доживу.
И чтобы захватывала весь контекст?
источник

ПК

Побитый Кирпич... in pro.cxx
Stas
И чтобы захватывала весь контекст?
Нет нигде захвата - имена разрешаются как с  обычными переменными
источник

AT

Alexander Tulikov in pro.cxx
Побитый Кирпич
Ещё лучше было бы просто:
const std::string name = "World";
const int number = 42;
print(f"Hello, {name}! The answer is {number}. Goodbye, {name}.");
Надеюсь, доживу.
Будет рефлексия, будет и интерполяция строк.
источник

ПК

Побитый Кирпич... in pro.cxx
Alexander Tulikov
Будет рефлексия, будет и интерполяция строк.
Дак для этого рефлексия не нужна
источник

AM

Alexander Malkov in pro.cxx
Все ждут рефлексию)
источник

ПК

Побитый Кирпич... in pro.cxx
Это чисто сахар для std::format - как range based for
источник

AM

Alexander Malkov in pro.cxx
только тут вопрос, если подставлять любой const char * - будет очень небезопасно...
источник

SS

Sergey Skvortsov in pro.cxx
Побитый Кирпич
Это чисто сахар для std::format - как range based for
Очередная языковая фича с завязкой на библиотеку?
источник

AT

Alexander Tulikov in pro.cxx
Побитый Кирпич
Дак для этого рефлексия не нужна
От литералов имён переменных к самим переменным без рефлексии не перейдёшь.
источник

ПК

Побитый Кирпич... in pro.cxx
Sergey Skvortsov
Очередная языковая фича с завязкой на библиотеку?
Да
источник