2011-08-13 45 views
1

我正在編寫一個httpserver,並且我被困在解析GET請求。 我將如何解析字符緩衝區的東西,如在C++中解析char數組

GET /images/logo.png HTTP/1.1

所以,我只得到了路徑和文件擴展名,但忽略了其他部分?

+0

'std :: string'&'std :: string :: substr' – smerlin

+0

如何使用substr來獲取該特定部分?我可以設置一個起始值,但結束部分永遠不會確定。 – Kraffs

+2

你讀過規格書嗎?你可以在這裏找到它們:http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1,你會看到請求行中有哪些部分以及它們是如何被分隔的。 。 –

回答

2

你沒有具體說明這個字符串是什麼類型的存儲 - 簡單的char *或一些字符串類。

所以,一般來說,你可以用相當簡單和骯髒的方式來做到這一點,將字符串分割爲空格字符和第二或中間部分。或者,更好的方法是熟悉正則表達式。 C++有幾個正則表達式庫 - Boost很受好評。

+0

它存儲在一個大小爲2042字節的char數組中。有沒有簡單的方法來做到這一點,而不使用庫? – Kraffs

+0

是的,你可以迭代char數組,只將第一個和第二個空間之間的字符拖出到第二個數組中。然而,我會推薦使用正則表達式 - 然後它會變成一個調用來匹配輸入字符串和模式 - 而圖書館會做所有的努力工作。 – iandotkelly

+0

您還需要注意網址編碼 - 空格是如何在此字符串中編碼的,'%20'或類似的? – iandotkelly