2012-04-25 2 views
0

ostream에서 출력을 읽는 방법?

ostream을 사용하는 매개 변수에 문자열 스트림을 전달할 수 있습니다. 그 후 str() funktion에 의해 stringstream 내부에 설정된 텍스트를 얻을 수 있습니다.

#include <sstream> 

... 

{ 
stringstream ss; 
print(ss); 
string text; 
text = ss.str(); 
// Handle text 
} 

과 같은 기능이있다 감안할 때 :

void print(ostream& stream) const; 

가 어떻게이 ostream에에 기록 된 데이터를 액세스 할 수 있습니까?

내가 문자열로 해석 생각했다 :

string text; 
print(text); 
// Interpret text 

이유는 매개 변수로 객체에 대한 포인터를 가지고 다른 기능이있을 수 있습니다 :

void append(*Data data); 

그리고 난을 사용해야합니다 데이터 객체는 데이터를 얻기 위해 메서드를 인쇄합니다.

// This is a public function in the Data class 
void append(*Data data) { 
    string text; 
    data->print(text); 
    // append data to this Data object 
} 

문자열로 캐스트하려고했습니다. 연은하지만 작동하지 않았다. 데이터를 파일에 저장 한 다음 해결 방법으로 읽을 수 있다면 생각하고 있습니다.

string text; 
print(text); 

이 대신

답변

3

... ... 이것을 시도 ...

ostringstream text; 
print(text); 

는 그런 다음 "텍스트"로 기록 된 텍스트를 사용할 수 있습니다.

+0

흠, 오류가 발생하지 않지만 어떻게 ostringstream을 문자열로 변환 할 수 있습니까? << 연산자가 작동하지 않습니다. ostringstreams str 멤버 나 get 또는 getline()의 조합도 마찬가지입니다. – user1356190

+0

@ user1356190 : 어떻게'str()'멤버 함수를 사용하려고 했습니까? ala'std :: cout << text.str() << '\ n'; ' –

+0

오 str() _function_을 (를) 가지고 있다는 것을 몰랐습니다! [link] http://www.cplusplus.com/reference/iostream/ostream/ 링크를 보면 어디에도 없습니다. 어쨌든 ostream의 매개 변수로 stringstream을 전달한 다음이를 "text = ss.str()"문자열로 변환했습니다. 완벽하게 작동합니다. 감사합니다! – user1356190

관련 문제