C ++相当于sprintf?

我知道std::coutprintf的C ++等价物。

什么是sprintf的C ++等价物?

std::ostringstream

例:

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

输出:

 name: nemo, age: 1000 

使用Boost.Format 。 它有类似printf的语法,types安全, std::string结果,以及其他很多漂亮的东西。 你不会回去的。

sprintf在C ++中工作得很好。

您可以使用iomanip头文件格式化输出stream。 检查这个 !

这是一个很好的c ++ sprintf函数。 如果你用得太多,stream可能会变得很难看。

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

在C ++ 11及更高版本中,std :: string保证使用以'\0'结尾的连续存储,因此使用&str[0]将其转换为char *是合法的。

使用一个stringstream来达到相同的效果。 另外,你可以包含<cstdio> ,但仍然使用snprintf。