c++ - snprintf - sprintf php
C++ equivalente de sprintf? (6)
Aquí hay una buena función para un sprintf de c ++. Las corrientes pueden ponerse feas si las usas demasiado.
std::string string_format(const std::string &fmt, ...) {
int n, size=100;
std::string str;
va_list ap;
while (1) {
str.resize(size);
va_start(ap, fmt);
int n = vsnprintf(&str[0], size, fmt.c_str(), ap);
va_end(ap);
if (n > -1 && n < size)
return str;
if (n > -1)
size = n + 1;
else
size *= 2;
}
}
En C ++ 11 y versiones posteriores, std :: string garantiza el uso de un almacenamiento contiguo que finaliza con ''/0''
, por lo que es legal convertirlo a char *
con &str[0]
.
Sé que std::cout
es el equivalente de C ++ de printf
.
¿Cuál es el equivalente en C ++ de sprintf
?
Puede usar el archivo de encabezado iomanip para formatear la secuencia de salida. ¡Mira this !
Usa un stringstream para lograr el mismo efecto. Además, puede incluir <cstdio>
y aún usar snprintf.
Use Boost.Format . Tiene sintaxis tipo printf
, tipo de seguridad, std::string
, y muchas otras cosas ingeniosas. No volverás.
Ejemplo:
#include <iostream>
#include <sstream> // for ostringstream
#include <string>
int main()
{
std::string name = "nemo";
int age = 1000;
std::ostringstream out;
out << "name: " << name << ", age: " << age;
std::cout << out.str() << ''/n'';
return 0;
}
Salida:
name: nemo, age: 1000
sprintf funciona bien en C ++.