我无法让 Poco::FIFOBuffer.read() 工作。获取访问冲突错误或变量结果周围的堆栈已损坏。
std::string output;
Poco::FIFOBuffer recvData(BUFFERLEN);
int iResult = mySockets[vect[2]]->receiveBytes(recvData);
char* result = "";
std::cout << recvData.read(result, recvData.size());
output = result;
在程序的其他地方,一个非常相似的东西似乎工作正常(vect 是一个 vector )mySockets 是一个 Map
Poco::FIFOBuffer sendData(BUFFERLEN, false);
sendData.copy(vect[3].c_str(), vect[3].size());
int iResult = mySockets[vect[2]]->sendBytes(sendData);
output = "data sent, sendBytes returned: " + std::to_string(iResult);
引用:http://pocoproject.org/docs-1.5.0/Poco.BasicFIFOBuffer.html#11400
最佳答案
如上评论所述,文档为 wrong .
如果您希望缓冲区自动调整大小,请使用 Poco::Buffer<char>
;或者,确保 char*
指向足够的空间来容纳数据(这很棘手 - 您必须查询 FIFOBuffer 以找出 receiveBytes()
调用返回了多少,因此使用 Poco::Buffer
是一个更简单的选择)。
关于c++ - Poco FIFOBuffer read() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30960355/