2010-08-18 15 views
49

Sono molto nuovo nel STL di C++, quindi potrebbe essere banale. Ho una variabile ostream con del testo al suo interno.Conversione di ostream in stringa standard

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

C'è un modo per estrarre il flusso e conservarlo in una stringa di tipo char*?

risposta

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

E spiego cosa sta succedendo nella risposta a questa question, che io non scrissi un'ora fa.

+0

ottengo il seguente messaggio di errore: 'struct std :: basic_ostream > 'non ha un membro chiamato' str ' –

+7

Includi le intestazioni necessarie .' # include 'e' #include ' –

+8

Non è ostream. È ostringstream – Vanuan

3

Prova std::ostringstream

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

La domanda era su ostream a stringa, nonostringstream a stringa.

Per chi fosse interessato ad avere il testo della domanda ha risposto (specifico per ostream), provate questo:

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

Ti darò dei punti per essere una testa calda. Va bene .. e per la risposta giusta, heh. – moodboom

+18

Questa è la risposta corretta. La risposta sopra, contrassegnata come corretta, NON risponde alla domanda. –