Vij*_*hew 57
例:
#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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
name: nemo, age: 1000
Run Code Online (Sandbox Code Playgroud)
jan*_*anm 25
使用Boost.Format.它有std::format类似语法,类型安全,printf()结果和许多其他漂亮的东西.你不会回去.
这是C ++ sprintf的一个不错的功能。如果使用过多,流可能会变得很丑陋。
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;
}
}
Run Code Online (Sandbox Code Playgroud)
在C ++ 11及更高版本中,保证std :: string使用以结尾的连续存储'\0',因此将其强制转换为char *using 是合法的&str[0]。