Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有可能检索到;宽度“;从格式字符串_C++_Fmt - Fatal编程技术网

C++ 是否有可能检索到;宽度“;从格式字符串

C++ 是否有可能检索到;宽度“;从格式字符串,c++,fmt,C++,Fmt,我需要一种从fmt::formatformat字符串中检索“width”参数的方法 I不想要易于使用auto size=fmt::formatted_size(“{:>5.2f}”,13453453.76345f)提取的格式操作的结果大小 我期待这样的事情 auto width = fmt::with_arg("{:>5.2f}"); assert(width == 5); 而且。。。 如果它也适用于整数,那就太好了: fmt::format("{:>

我需要一种从
fmt::format
format字符串中检索“width”参数的方法

I不想要易于使用
auto size=fmt::formatted_size(“{:>5.2f}”,13453453.76345f)提取的格式操作的结果大小

我期待这样的事情

auto width = fmt::with_arg("{:>5.2f}");
assert(width == 5);
而且。。。 如果它也适用于整数,那就太好了:

fmt::format("{:>4d}", 42);
//              ^
//     I want this number (4)

否,宽度在内部用于确定填充量。它不是通过任何公共API提供的。您可以使用解析格式字符串并获取宽度,但这是一个内部函数。

否,宽度在内部用于确定填充量。它不是通过任何公共API提供的。您可以使用解析格式字符串并获取宽度,但这是一个内部函数。

您需要解决的问题是什么?为什么需要宽度?为什么不将宽度放入传递给
format
函数的变量中(例如
int width=5;fmt::format(“{:>{}.2f}”,13.23454f,width);
)?然后很容易得到宽度。@Someprogrammerdude,这正是我试图避免的。我尽量避免使用字符串中包含的信息重复其他参数。将
{}
添加到格式字符串会对格式字符串添加太多约束。@user23573您可以创建自己的函数get_width(string fmt),在该函数中,您基本上可以通过放置一些浮点值来测量宽度,然后测量结果字符串长度(或对其进行分析)。@user23573,你可以深入研究fmt,看看他们是如何做到这一点的。也许修改fmt以满足您的特定需求?您需要解决的问题是什么?为什么需要宽度?为什么不将宽度放入传递给
format
函数的变量中(例如
int width=5;fmt::format(“{:>{}.2f}”,13.23454f,width);
)?然后很容易得到宽度。@Someprogrammerdude,这正是我试图避免的。我尽量避免使用字符串中包含的信息重复其他参数。将
{}
添加到格式字符串会对格式字符串添加太多约束。@user23573您可以创建自己的函数get_width(string fmt),在该函数中,您基本上可以通过放置一些浮点值来测量宽度,然后测量结果字符串长度(或对其进行分析)。@user23573,你可以深入研究fmt,看看他们是如何做到这一点的。也许修改fmt以满足您的特定需求?
parse\u format\u string
正是我感兴趣的函数。有人有例子吗?
parse\u format\u string
正是我感兴趣的函数。有人举过例子吗?
fmt::format("{:>4d}", 42);
//              ^
//     I want this number (4)