SCGIリクエスト用のパーサーを書こうとしています。例で説明されている文字列を解析しようとしていますが、何らかの理由で、コンテンツの長さの値と次のプロパティ名を区切る 2 番目の null 文字の位置を見つけることができません。
これは私のテスト文字列です:
string scgi_request(
"70:CONTENT_LENGTH\027\0SCGI\01\0REQUEST_METHOD\0POST\0REQUEST_URI\0" \
"/deepthought\0,What is the answer to life?"
, 91);
最初の null 文字の位置 18 を見つけることができます。しかし、その後の位置を見つけようとすると、返された位置は無効になり、位置 24 まで数文字ずれます。
これは私のアルゴリズムです:
size_t contentLengthEnd = scgi_request.find('\0');
size_t contentLengthValueEnd = scgi_request.find('\0', ++contentLengthEnd);
std::cerr << contentLengthEnd << std::endl; // 19, because I shifted this one forward
// otherwise I'd always get the same
// character
std::cerr << contentLengthValueEnd << std::endl; // 24, no clu why.