std::string C++20/23 인터페이스 혁신

5329 단어 cppprogramming
다음은 std::string의 4가지 새 멤버 함수에 대한 간단한 치트 시트입니다.



More Cheat Sheets

이익


resize_and_overwrite 예를 들어 C API에 대한 호출에서 오는 문자로 문자열을 즉시 덮어써야 하는 경우 문자열 메모리 버퍼의 값비싼 초기화를 방지합니다.

// BEFORE:
std::string s1;
s1.resize(1024);  // costly initialization
// write characters to string:
size_t sizeWritten = some_C_library(s1.data(), s1.size());

// AFTER:
std::string s2;
s2.resize_and_overwrite(1024, [](char* p, size_t n){
  size_t sizeWritten = some_C_library(p, n);
  return sizeWritten;
});



함수 서명 및 오버로드




namespace std {
template <typename CharT, typename Traits, typename Allocator>
class basic_string {
  // ...
  bool contains (std::basic_string_view<CharT>);
  bool contains (CharT);
  bool contains (CharT const*);

  bool starts_with (std::basic_string_view<CharT>);
  bool starts_with (CharT);
  bool starts_with (CharT const*);

  bool ends_with (std::basic_string_view<CharT>); 
  bool ends_with (CharT); 
  bool ends_with (CharT const*);

  template <typename Operation>
  constexpr void resize_and_overwrite (size_type count, Operation op);
  // ...
};
}  // std

좋은 웹페이지 즐겨찾기