C ++将格式化字符串转换为流

时间:2010-06-02 08:14:36

标签: c++ stream printf

我正在使用VS2008 C ++。

据我所知,没有办法在C ++流中传递这样的东西:(不使用外部库)

"number " << i    <------ when i is an integer.

所以我一直在寻找一种更好的方法来做到这一点,而我所能想到的就是使用以下方法创建一个字符串:

char fullstring = new char[10];
sprintf(fullString, "number %d", i);
.... pass fullstring to the stream  .....
delete[] fullString;

我知道这很愚蠢,但还有更好的方法吗?

3 个答案:

答案 0 :(得分:4)

std::ostringstream oss;
oss << "number " << i;
call_some_func_with_string(oss.str());

答案 1 :(得分:4)

你有没有想过尝试

int i = 3;
std::cout << "number " << i;

工作得很好,当然也适用于任何流。

答案 2 :(得分:2)

试试这个:

#include <sstream>
// [...]
std::ostringstream buffer;
int i = 5;
buffer << "number " << i;
std::string thestring = buffer.str(); // this is the droid you are looking for