안녕하세요 저는 대중이 클라이언트가 제공하는 버퍼에서 작업 할 수있는 기능을 가진 문자열 클래스 (예 : std::string
)를 사용하고 싶다고 생각했습니다.포인터 인수로 char * 및 char const *를 장식하십시오. 좋은 방법입니까?
당신이 생각하는 위험은 무엇입니까? 고전적인 냄새인가요? etcaetera
그래서 같은 의미 : acquire_RW
및 acquire_RO
ext
여부를 문자의 수정을 허용 할 :
char ext[64] = {0};
my::string s(ext, my::string::acquire_RW);
size_t len = s.size();
size_t pos = s.find("zboub");
my::string s2(s); // uses true (alloc+)copy semantic here.
그래서 나는이 개 전략을 forsee. 그리고 임의의 비 const 메소드의 경우는
RO
이고, 버퍼가 확장되어야하는 메소드의 경우는
RW
입니다. 이 순간에만 & 복사본을 할당합니다.
그런데 my::string
유형은 char*
유형의 데코레이터가됩니다.
물론 클라이언트에게 데코레이터가 요구 사항으로 남겨지기 전에 외부 버퍼를 비우지 않도록주의하십시오. 귀하의 우려
나는 항상 STL 문제 중 하나가 메모리를 처리하지 않고 const char * 및 size를받는 문자열을 제공하지 않는다는 것을 발견했으며 – Alon