GOOGLE ADS

sábado, 16 de abril de 2022

Rango de formato con fmt sin encerrar [] corchetes

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

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...