C ++ equivalente de sprintf?

Sé que std::cout es el equivalente de C ++ de printf .

¿Cuál es el equivalente en C ++ de sprintf ?

std::ostringstream

Ejemplo:

 #include  #include  // for ostringstream #include  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 

Use Boost.Format . Tiene syntax tipo printf , tipo de seguridad, std::string , y muchas otras cosas ingeniosas. No volverás.

sprintf funciona bien en C ++.

Puede usar el archivo de encabezado de iomanip para formatear la secuencia de salida. ¡Mira esto !

Aquí hay una buena función para un sprintf de c ++. Las streams 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] .

Usa un stringstream para lograr el mismo efecto. Además, puede incluir y aún usar snprintf.