1
콘솔 작업을 쉽게하기 위해 문자열 연산자 역할을하는 스트림 연산자 < <을 재정의하는 객체가 있습니다.스트림을 사용하여 객체를 문자열로 변환
cout << obj << endl;
문자열 출력과 예상되는 문자열을 비교하여 단위 테스트에서이 기능을 테스트하고 싶습니다. 현재 다음과 같이 수행합니다.
stringStream ss;
ss << obj;
string objStr = ss.str();
EXPECT_EQ(objStr, "expected string output");
이 내용은 특별히 읽을 수있는 것이 아니며 간결하지 않습니다. obj의 문자열 표현을 가져 오는 더 쉽고 짧고 간단한 방법이 있습니까?
내 C++ 큰되지 않습니다. ss.str()의 결과는 make_string()의 스택에 할당되거나 make_string()을 호출하는 함수의 스택에 할당됩니까? –
std : forward (o)가 필요합니다. ss << o를 할 수 없습니까? –
@EthanHeilman :'str()'은 값으로'std :: string'을 반환합니다. 수명에 대해 걱정할 필요가 없습니다. 'std :: forward (o)'는이 경우에는 필요하지 않다. 완벽한 전달을 사용하는 것이다. *이 경우 *는'ss << o'와 같다. 방금'std :: forward '이라고 쓰여졌습니다. 나는 대답을 편집 할 것이다. –