C ++ équivalent de sprintf?

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

Qu’est-ce que l’équivalent en C ++ de sprintf ?

std::ossortingngstream

Exemple:

 #include  #include  // for ossortingngstream #include  int main() { std::ssortingng name = "nemo"; int age = 1000; std::ossortingngstream out; out << "name: " << name << ", age: " << age; std::cout << out.str() << '\n'; return 0; } 

Sortie:

 name: nemo, age: 1000 

Utilisez Boost.Format . Il a une syntaxe semblable à printf , un type safety, std::ssortingng résultats std::ssortingng et beaucoup d’autres astuces astucieuses. Vous ne reviendrez pas.

sprintf fonctionne très bien en C ++.

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

Voici une fonction intéressante pour un sprintf c ++. Les stream peuvent devenir laids si vous les utilisez trop lourdement.

 std::ssortingng ssortingng_format(const std::ssortingng &fmt, ...) { int n, size=100; std::ssortingng 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; } } 

Dans C ++ 11 et versions ultérieures, std :: ssortingng est garanti pour utiliser un stockage contigu qui se termine par '\0' , il est donc légal de le convertir en char * utilisant &str[0] .

Utilisez une chaîne de caractères pour obtenir le même effet. En outre, vous pouvez inclure et toujours utiliser snprintf.