C++ équivalent de sprintf?
Je sais que std::cout
est L'équivalent C++ de printf
.
Quel est l'équivalent C++ de sprintf
?
56
demandé sur
Smi
2011-02-13 10:50:54
6 réponses
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
49
répondu
Vijay Mathew
2013-08-28 14:44:28
Utiliser Coup De Pouce.Format . Il a printf
- comme la syntaxe, la sécurité de type, std::string
Résultats, et beaucoup d'autres trucs astucieux. Vous ne serez pas revenir en arrière.
22
répondu
janm
2013-03-18 07:48:45
Voici une bonne fonction pour un sprintf c++. Les flux peuvent devenir moche 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(&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 et versions ultérieures, std:: string est garanti pour utiliser un stockage contigu qui se termine par '\0'
, Il est donc légal de le convertir en char *
en utilisant &str[0]
.
4
répondu
Erik Aronesty
2015-12-28 11:22:52
Utilisez un stringstream pour obtenir le même effet. En outre, vous pouvez inclure <cstdio>
et toujours utiliser snprintf.
1
répondu
regality
2017-05-25 01:30:07