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
并填写 nb
和 city
时,您会得到“垃圾”(也就是不可预测的结果),这就是不允许不完整替换的原因。
见@j6t 的评论。你总是可以通过name
和city
为name
和city
以防它们不可用。
【参考方案1】:
没有。引用一个不存在的参数,无论是否有位置,都是错误的。
【讨论】:
以上是关于fmt 只替换字符串中的一个位置参数几个位置参数的主要内容,如果未能解决你的问题,请参考以下文章
如何匹配第 n 个位置的字符(Cloudera Impala SQL)