CGIアプリケーションで作業していますが、Content-Lengthなどの応答ヘッダーを本体の前に送信する必要がありますが、本体が完全に形成されるまではわかりません。私はただの文字列を使用し、連結私が行くように、私はcout
と同様< <演算子を使って好きなので、私はこの小さなクラスを作成できます。CGIプログラムのカスタム出力バッファー、演算子のオーバーロード
#include <iostream>
using namespace std;
class outbuf {
public:
void operator<<(const char *str) {
this->buffer+= str;
}
void operator<<(const string &str) {
this->buffer+= str;
}
void obsend() {
cout << this->buffer;
this->buffer.clear();
}
private:
string buffer;
};
int main(int argc, char **argv, char** envp) {
outbuf cbout;
string s = " of the output buffer.";
cbout << "This is ";
cbout << "a test" << " ...";
cbout << s;
cbout.obsend();
return 0;
}
問題は二オペレータ、コンパイラにcbout << "a test" << " ...";
が付属しています文句を言っています。invalid operands of types 'void' and 'const char [5]' to binary 'operator<<'
私はこのエラーを理解していますが、何をすべきかはわかりません。私がやろうとしていることを達成するためのよりよい方法はありますか? This articleは有望に見えましたが、彼が話していることのいくつかを理解することができず、私がしようとしているものに正確に合うようには見えません。
驚くばかり!魅力のように動作します。ありがとう! – alanlittle