2010-06-02 10 views
1

J'utilise VS2008 C++.C++ convertit une chaîne formatée en flux

Si je comprends bien, il n'y a pas moyen de passer quelque chose comme ça dans un de flux C de: (sans utiliser des bibliothèques externes)

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

Je cherchais une meilleure façon de faire, et moi-même Je pourrais venir avec est de créer une chaîne en utilisant:

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

Je sais qu'il est stupide, mais est-il une meilleure façon de le faire?

Répondre

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

vous n'avez pris la peine de essayer? Fonctionne assez bien, et naturellement la même chose devrait fonctionner avec n'importe quel flux.

2

essayez ceci:

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