2016-12-19 7 views
0

우리는 함수 void output(std::string)로 iostream을 대체했다 :문자열에 문자열과 int를 작성하는 방법은 무엇입니까? 직장에서

물론
std::cout << "This is some output." << '\n'; 

<--Old-- 
--New--> 

output("This is some output"); 

내가 문자열과 int를 결합 코드를 많이 가지고 있고, 난 이미이 문제에 대한 하나의 가능한 해결책을 발견했습니다 :

int some_value = 5 
std::cout << "Some value: " << some_value << '\n'; 

<--Old-- 
--New--> 

int some_value = 5; 
std::stringstream tmp_stream; 
tmp_stream << "Some value: " << some_value << '\n'; 
output(tmp_stream.str()); 

하지만 내가 정말이 솔루션 같은 두 개의 코드의 추가 라인과 추가 사용-번 변수를 소개한다. 좀 더 우아한 다른 가능한 해결책을 알고 있습니까?

+0

귀찮게 문자열을 결합 할 수 있습니다를 호출하기 전에 그들을 연결, std::string에 숫자 형식을 변환 할 std::to_string를 사용할 수 있습니다. 나는 OP가'output_stream' 클래스를 썼다는 것을 제안하는 과정에있었습니다.이 클래스는 출력을'output' 함수에 보냈습니다. 어느 것이 든 streambuf를 통해 제대로 수행하거나,'operator <<'묶음을 가진 클래스를 작성하는 것만으로도 가능합니다. 그런 식으로'std :: cout'을'g_output'으로 변경하면됩니다. 질문이 중복 된 것으로 끝났기 때문에 그 대답을 쓸 수 없습니다. –

+0

응답 해 주셔서 감사합니다. – johannesmik

+0

@johannesmik 링크 된 복제본보다 일반적인 버전이거나 여기에 답은 variadic 함수 템플릿을 만드는 것입니다. 예를 들어 http://ideone.com/eVjnbv를 참조하십시오 (주석 처리 된 블록은 C++ 17 용입니다). 이렇게하면'std :: cout << a << b << c; '를 to_output (a, b, c);로 변환하면됩니다. – Holt

답변

3

그런 다음 output

output("Some value: " + std::to_string(some_value));