'C++ {fmt} library: Is there a way to format repeated format fields?
I have a program with many formatted write statements that I'm using the fmt library for. Some of them have many fields, say 100 for example purposes, something like this:
fmt::print(file_stream, "{:15.5g}{:15.5g}{:15.5g}/*and so on*/", arg1, arg2, arg3/*same number of arguments*/);
Is there a straightforward way to truncate the fields so they don't all have to be written out? Obviously this example wouldn't work but it illustrates the idea:
fmt::print(file_stream, 100("{:15.5g"), arg1, arg2, arg3/*etc*/);
Solution 1:[1]
You can put your arguments in an array and format part of this array as a view (using span
or similar) with fmt::join
(https://godbolt.org/z/bo1GrofxW):
#include <array>
#include <span>
#include <fmt/format.h>
int main() {
double arg1 = .1, arg2 = .2, arg3 = .3;
double args[] = {arg1, arg2, arg3};
fmt::print("{:15.5}", fmt::join(std::span(args, args + 2), ""));
}
Output:
0.1 0.2
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | vitaut |