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

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

Linda Hamilton
풀어 주다: 2024-10-24 04:34:02
원래의
979명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿