我有一个使用 istrstream 的代码块,不推荐使用:
if((iss = new istrstream(inBuf, (int) msgLen)) == 0)
{
errId = ReadErr;
errStr = "Failed to allocate ostrstream";
D(cerr << "IpcSapBaseMsg: failed to allocate ostrstream\n");
}
我使用 istringstream 更改了 istrstream ,但它没有奏效。
IpcSapBaseMsg.C:178:52:错误:来自&#39; msgLen_t {aka int}的无效转换&#39; to&#39; std :: ios_base :: openmode {aka std :: _ Ios_Openmode}&#39; [-fpermissive] if((iss = new istringstream(inBuf,(int)msgLen))== 0)
istrstream 或其他任何方式解决我的问题是否还有其他可行方法?感谢。
答案 0 :(得分:4)
std::istringstream(std::string(inBuf, msgLen));
应该有效。如果inBuf
以空值终止,则您不需要msgLen
参数 - 您可以这样做
std::istringstream(inBuf);
为什么new
?我建议在此处发布问题之前查看the reference。