2

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.
4

1 に答える 1