中田さん、ありがとうございます。解決しました。
> GETメソッドでは、環境変数 QUERY_STRING から取得します。
すっごく了解。どチョンボでした。^^;
> POST では、標準入力から取得でいいはずですが、getline でいいかどうか。。(?)
> 普通、環境変数 CONTENT_LENGTH 分だけ読み込みます。
これでうまくいったです:
_setmode( 0, _O_BINARY ); // 標準入力をbinary-modeに(いらないかも)
size_t length = atoi(getenv("CONTENT_LENGTH")) + 1;
char* input = new char[length];
cin.getline(input,length);
...
delete[] input;
επιστημηさん、
GETメソッドでは、環境変数 QUERY_STRING から取得します。
POST では、標準入力から取得でいいはずですが、getline でいいかどうか。。(?)
普通、環境変数 CONTENT_LENGTH 分だけ読み込みます。
Perl では、
if ($ENV{'REQUEST_METHOD'} eq "GET") {
$in = $ENV{'QUERY_STRING'};
} elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
} などとします。
επιστημη@C++屋です。はじめまして。
早速ですが、AnHTTPdでC++でちょっとしたCGIを書こうと遊び始めたところです。
#include <iostream>なんてのをこさえて ./cgi_bin/cpp_trial.exe とし、
#include <string>
#include <cstdlib> // getenv
using namespace std;
int main() {
cout << "Content-Type: text/plain; charset=shift_jis\n" << endl;
const char* e = getenv("inputtext");
if ( e && *e ) {
cout << "inputtext=" << e << endl;
} else {
cout << "'inputtext' not specified" << endl;
}
cout << "strings from 'cin'" << endl;
for (;;) {
string line;
getline(cin, line);
if ( cin.eof() ) break;
cout << line << endl;
}
cout << "-------" << endl;
return 0;
}