2010-08-18 9 views
49

Je suis très nouveau dans le langage C++ STL, donc cela peut être trivial. J'ai une variable ostream avec du texte dedans.Conversion d'ostream en chaîne standard

ostream* pout; 
(*pout) << "Some Text"; 

Y at-il un moyen d'extraire le flux et le stocker dans une chaîne de type char*?

Répondre

47
 std::ostringstream stream; 
    stream << "Some Text"; 
    std::string str = stream.str(); 
    const char* chr = str.c_str(); 

Et j'expliquer ce qui se passe dans la réponse à cette question, que j'ai écrit il n'y a pas une heure.

+0

je reçois le message d'erreur suivant: « struct std :: basic_ostream > 'n'a aucun membre nommé' str ' –

+7

Inclure les en-têtes nécessaires .' # inclure 'et' #include ' –

+8

Ce n'est pas ostream. Il est ostringstream – Vanuan

3

Essayez std::ostringstream

std::ostringstream os; 
    os<<"Hello world"; 
    std::string s=os.str(); 
    const char *p = s.c_str(); 
116

La question était sur ostream à chaîne, pasostringstream à chaîne.

Pour ceux qui souhaitent avoir la question réelle répondu (spécifique à ostream), essayez ceci:

void someFunc(std::ostream out) 
{ 
    std::stringstream ss; 
    ss << out.rdbuf(); 
    std::string myString = ss.str(); 
} 
+2

Je vais vous donner des points pour être une tête brûlée. D'accord .. et pour la bonne réponse, heh. – moodboom

+18

Ceci est la bonne réponse. La réponse ci-dessus, marquée comme correcte, ne répond PAS à la question. –