以下是從哪個設來測試與服務器通信並獲得它的圖片的代碼的段:的atoi在C++結果segmentaion錯誤
bool testPICcomm(){
Poco::Logger &logger = Poco::Logger::get("PictureTester");
logger.setLevel(Poco::Message::PRIO_DEBUG);
HttpClient* h = new HttpClient(host, 80);
std::map<std::string, std::string> headers;
Poco::UTF8Encoding utf;
Encoder encoder(utf);
h->connect();
h->sendHttpRequest(askForPic,"","",0,0);
if((h->getHttpHeaders(headers, encoder)) == false)
{
logger.debug("Couldn't Retrieve Headers "+ false);
h->close();
return false;
}
logger.debug("got headers");
//get head data
std::string mime = headers["Content-Type"];
logger.debug("mime type:" + mime);
logger.debug("length string: " + std::string((headers["Content-Length"]).c_str()));
int length= atoi((headers["Content-Length"]).c_str());
logger.debug("pic length:" + length);
...
我使用Linux上蝕(Eclipse不功能太好,所以即時只在控制檯上工作)。
現在通過跟蹤記錄器消息,我推斷atoi(查看代碼的末尾)會導致分段錯誤。
考慮到另一個函數testXMLcomm工作正常,它看起來很相似,這真的很奇怪。
我包括標準輸入輸出和STDLIB ofcourse。
請幫忙!!!
空字符串的'atoi'返回'0',就我們可以看到的代碼而言,這應該沒問題。 –
當然可以。如果不存在,地圖將創建一個具有默認值的條目。 'c_str'將會返回一個正確的null結尾的空字符串。 –
好了。 Thx指出。 – ypnos