여러 스트림에 동일한 문자열 (예 : 로그 메시지)을 보내야합니다.
다음 중 가장 효율적인 솔루션은 무엇입니까?여러 스트림에 같은 문자열이 있습니다.
각 스트림에 대해 동일한 문자열을 다시 작성하고 스트림 자체로 보냅니다.
outstr1 << "abc" << 123 << 1.23 << "def" << endl; outstr2 << "abc" << 123 << 1.23 << "def" << endl; outstr3 << "abc" << 123 << 1.23 << "def" << endl;
문자열을 문자열 연산자로 한 번 작성하고 모든 스트림으로 보냅니다.
std::string str = "abc" + std::to_string(123) + std::to_string(1.23) + "def"; outstr1 << str; outstr2 << str; outstr3 << str;
- 는 스트림에 한 번 문자열을 구축, 모든 스트림에 보내
std::stringstream sstm; sstm << "abc" << 123 << 1.23 << "def" << endl; std::string str = sstm.str(); outstr1 << str; outstr2 << str; outstr3 << str;
일부 또는 이러한 출력 스트림을 모두 RAM 디스크에있을 수 있습니다.
다른 방법으로 동일한 작업을 수행 할 수 있습니까?
답변에 동의하지만 두 번째 옵션에 대해 작성하고 추가하는 문자열이 실제로 작을 경우 대부분의 구현에서 SSO로 인한 할당이 없습니다. – Praetorian
@ Prætorian 좋은 메모를 보내 주셔서 감사합니다. SSO 지점을 반영한 답변을 편집했습니다. – dasblinkenlight
예제의 문자열은 실제로는 훨씬 길 수 있습니다. – Pietro