替换istrstream(char * s,std :: streamsize n)构造函数?

时间:2017-07-13 11:37:27

标签: c++ string

我有一个使用 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 或其他任何方式解决我的问题是否还有其他可行方法?感谢。

1 个答案:

答案 0 :(得分:4)

std::istringstream(std::string(inBuf, msgLen));

应该有效。如果inBuf以空值终止,则您不需要msgLen参数 - 您可以这样做

std::istringstream(inBuf);

为什么new?我建议在此处发布问题之前查看the reference