>백엔드 개발 >C++ >ostringstream을 재사용하는 방법은 무엇입니까?

ostringstream을 재사용하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 04:34:02966검색

How to Reuse ostringstreams?

ostringstream을 재사용하는 방법은 무엇인가요?

애플리케이션이 메모리를 자주 할당하지 않도록 하려면 ostringstream(및 기본 버퍼)을 지우고 재사용하는 것이 좋습니다. 객체를 초기 상태로 재설정하려면 다음 단계를 따르세요.

clear 및 str 사용

과거에는 이를 달성하기 위해clear 및 str 시퀀스를 사용했습니다.

<code class="cpp">// 清除,因为 eof 或其他位可能仍然设置。
s.clear();
s.str("");</code>

이는 입력 및 출력 문자열 스트림 모두에 작동합니다.

수동으로 지우고 찾기

또는 수동으로 지우고 적절한 시퀀스 조회로 시작할 수도 있습니다.

<code class="cpp">s.clear();
s.seekp(0); // 对于输出:将放置指针指向开头
s.seekg(0); // 对于输入:将获取指针指向开头</code>

이렇게 하면 str이 방지됩니다. 일부 재할당을 수행하고 대신 현재 출력 버퍼에 있는 내용을 덮어씁니다. 결과는 다음과 같습니다.

<code class="cpp">std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b";
assert(s.str() == "bello");</code>

c 함수의 경우 std::ends 사용

c 함수에 해당 문자열을 사용하려면 다음을 수행하세요. std::ends end를 사용하여 다음과 같이 종료 null을 넣습니다.

<code class="cpp">std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b" << std::ends;
assert(s.str().size() == 5 && std::strlen(s.str().data()) == 1);</code>

std::ends는 더 이상 사용되지 않는 std::strstream의 남은 부분으로, 할당한 항목에 직접 쓸 수 있습니다. 스택 문자 배열. 종료 null을 수동으로 삽입해야 합니다. 그러나 std::ends는 더 이상 사용되지 않으며 위의 상황에서 여전히 유용하기 때문이라고 생각합니다.

위 내용은 ostringstream을 재사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.