我正在尝试为SCGI请求编写解析器。我正在尝试解析示例中描述的字符串,但由于某种原因,我找不到第二个空字符的位置,即分隔内容长度值和下一个属性名称的位置。
这是我的测试字符串:
string scgi_request(
"70:CONTENT_LENGTH\027\0SCGI\01\0REQUEST_METHOD\0POST\0REQUEST_URI\0" \
"/deepthought\0,What is the answer to life?"
, 91);
我可以找到第一个空字符的位置,位置 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.