fmt 只替换字符串中的一个位置参数几个位置参数

Posted

技术标签:

【中文标题】fmt 只替换字符串中的一个位置参数几个位置参数【英文标题】:fmt Replace only one positional argument in string several positional argumentsfmt 只替换字符串中的一个位置参数几个位置参数 【发布时间】:2020-11-19 10:20:01 【问题描述】:

我想知道 fmt 库是否只允许修改包含多个位置参数的字符串中的一个位置参数?

这是我的测试,它不起作用,fmt 文档显示没有解决方案

std::string text = "name is nb years old and lives in city";
try

    text = fmt::format(text, fmt::arg("name", "John"));

catch (const fmt::format_error::exception &e)

    std::cout << e.what() << std::endl;

我想得到John is nb years old and lives in city,可以吗?

【问题讨论】:

如果name 的值是city,字面意思是什么?那么结果将是city is nb years old and lives in city。当您稍后将其提供给 fmt 并填写 nbcity 时,您会得到“垃圾”(也就是不可预测的结果),这就是不允许不完整替换的原因。 见@j6t 的评论。你总是可以通过namecitynamecity 以防它们不可用。 【参考方案1】:

没有。引用一个不存在的参数,无论是否有位置,都是错误的。

【讨论】:

以上是关于fmt 只替换字符串中的一个位置参数几个位置参数的主要内容,如果未能解决你的问题,请参考以下文章

位置变量与预定义变量

如何匹配第 n 个位置的字符(Cloudera Impala SQL)

如何在bash中获得第n个位置参数?

linux之shell---特殊字符$

TypeError: fit() 接受 1 个位置参数,但给出了 3 个

类型错误:equals() 接受 1 个位置参数,但给出了 2 个