2010-01-14 2 views

답변

4

아마이 일반적인 순서에 뭔가 할 거라고 : 정상적인 스트림과

#include <string> 
#include <sstream> 
#include <iostream> 

int main() {  
    std::stringstream stream("Something "); 

    stream.seekp(0, std::ios::end); 
    stream << 12345; 

    std::cout << stream.str(); 
    return 0; 
} 

, 마지막에 추가를, 당신은 두 번째 매개 변수로 std::ios::ate 또는 std::ios::app으로 열 것 하지만 문자열 스트림을 사용하면 믿을 수 없을 정도로 작동하지 않는 것 같습니다 (실제 컴파일러는 gcc 나 VC++에서 출력 할 때 출력 할 때도 있습니다).

+1

'c_str 같은 일을하고, 코드를 명확하게 할 수있는 경우'잘못된

string s("something"); s += boost::lexical_cast<string>(12); 

그것의 이미 부스트를 사용하지 않는 경우 사용 아마도 가치가 없어, 'std :: cout << stream.str();' – Frunsi

+0

@hassan : 아니요, stringstream에는 c_str() 메서드가 없습니다. – Frunsi

+0

감사합니다. 닐 - 내 손에 멍청한 슬립. –

1

이미 부스트를 사용중인 경우 lexical_cast을 사용할 수 있습니다. 기본적으로 위의 패키지 버전으로 스트림에 쓰거나 스트림에서 읽을 수있는 모든 유형에서 작동합니다. 하지만 당신이 특히()

foo(string("something")+boost::lexical_cast<string>(12)); 
관련 문제