我試圖寫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.
什麼是'請求'?如果有的話,它與'scgi_request'有關嗎? – 2014-10-16 22:23:44
@ user657267它不應該,因爲在ctor中他指定了字符串的長度,並且'\ 0'不被視爲構造上的特殊字符 – vsoftco 2014-10-16 22:26:44
我認爲通過傳遞長度來創建字符串會避免這種情況? – ruipacheco 2014-10-16 22:26:46