07/12/21 11:37:49
>>33のcapture_stringをパクればいいんでね?
class CaptureString {
public:
typedef char value_type;
private:
CString *target;
size_t size;
value_type *buffer;
public:
CaptureString(CString *target_, size_t size_ = DEFAULT_SIZE)
: target(target_), size(size_), buffer(NULL) {
}
~CaptureString() {
if (buffer != NULL) {
target->ReleaseBuffer();
}
}
operator value_type *() {
if (buffer == NULL) {
buffer = target->GetBuffer(size);
}
return buffer;
}
};
// 使用例
CString str;
fgets(stdin, CaptureString(&str, BUF_SIZE), BUF_SIZE);