106 votes

C ++ équivalent de sprintf?

Je sais que std::cout est l’équivalent C ++ de printf .

Quel est l'équivalent C ++ de sprintf ?

79voto

Vijay Mathew Points 17155

std::ostringstream

Exemple:

 #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;
}
 

Sortie:

 name: nemo, age: 1000
 

19voto

Steve Rowe Points 14688

sprintf fonctionne très bien en C ++.

11voto

Erik Aronesty Points 2223

Voici une fonction intéressante pour un sprintf c ++. Les cours d'eau peuvent devenir laids si vous les utilisez trop.

 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((char *)str.c_str(), size, fmt.c_str(), ap);
       va_end(ap);
       if (n > -1 && n < size)
           return str;
       if (n > -1)
           size=n+1;
       else
           size*=2;
       }
}
 

7voto

vinkris Points 1

Vous pouvez utiliser le fichier d’en-tête iomanip pour formater le flux de sortie. Vérifiez ceci !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X