Quiero imprimir un rango de valores con ,separador pero sin []usar la biblioteca fmt.
Si trato de imprimir un rango como este
std::vector v {8,4,7,2};
std::cout << fmt::format("{}",v) <<"\n";
la salida es
[8, 4, 7, 2]
Pero en realidad quiero que la salida sea
8, 4, 7, 2
¿Cómo puedo hacer esto?
Un enfoque que he encontrado es hacer lo siguiente
std::cout << fmt::format("{}",fmt::join(v,", ")) <<"\n";
que funciona. Sin embargo, es detallado y hace 2 llamadas a fmt, lo que me gustaría evitar. es posible?
manifestación
Además, debido a razones de rendimiento y legibilidad, no estoy interesado en eliminarlo []de la cadena producida por fmt.
Solución del problema
El código más corto se usa fmtpara hacer la impresión directamente, en lugar de solo usarlo para formatear, y luego pasar el resultado a la normalidad de coutla iostreammanera:
fmt::print("{}\n", fmt::join(v, ", ")); // Optionally, I believe you can use the literals to make the format string compile-type checked, "{}\n"_format
La cadena de formato también incorpora la nueva línea y printhace tanto el formato como la impresión, por lo que es notablemente más corta/menos compleja que:
std::cout << fmt::format("{}", fmt::join(v, ", ")) << "\n";
No hay comentarios:
Publicar un comentario