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.