gpt4 book ai didi

c++ - c++中的atoi结果段错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:50:44 25 4
gpt4 key购买 nike

以下是一段代码,该代码旨在测试与服务器的通信并从中获取图片:

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(eclipse 运行不太好,所以我只能在控制台上工作)。

现在,根据记录器消息,我推断是 atoi(查看代码末尾)导致了段错误。

考虑到另一个函数 testXMLcomm 工作正常并且看起来很相似,这真的很奇怪。

我当然包括了 stdio 和 stdlib。

请帮忙!!!

最佳答案

我预计崩溃发生在 logger.debug("pic length:" + length); 行.您添加了一个整数偏移量 length到一个指向字符串文字的指针,并在无人区找到一个地址。

你可能想写这样的东西:

ostringstream ss("pic length: ");
ss << length;
logger.debug(ss.str());

logger.debug("pic length: " + boost::lexical_cast<string>(length)); , 或者 C++11 有 std::to_string(length) .

关于c++ - c++中的atoi结果段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com