【问题标题】:How to initialise a stringstream from a vector char如何从向量字符初始化字符串流
【发布时间】:2013-05-20 23:26:57
【问题描述】:

目前我正在使用 boost char 数组

boost::array<char, 512> received_data;
std::istringstream ss_(received_data.data()); 

但是如果我收到的数据是std::vector&lt;char&gt; received_data(512);

我如何将这些数据发送到我的std::istringstream ss_

【问题讨论】:

  • 没有简单(并且正确)的方法可以正确地做到这一点。要做到这一点,您必须使用 boost 或实现自己的 streambuf(这不是难)。

标签: c++ string vector istringstream


【解决方案1】:

istringstream 接受一个字符串,一个字符串可以由两个 char 迭代器组成,像这样:

istringstream iss(string(v.begin(), v.end()));

【讨论】:

  • 这会产生不必要的数据副本。
【解决方案2】:
std::vector<char> receivedData(512);

std::istringstream iss(&receivedData[0]);

【讨论】:

  • 如果数据中没有 0 并且最后一个是 0 则很好。
  • @user494461,迭代器对。
  • 如果0std::vector&lt;char&gt; 中间有一个0,那么据我所知,迭代器版本也只会占用0 的部分,也就是说首选迭代器版本。
猜你喜欢
  • 1970-01-01
  • 2019-06-17
  • 2011-05-15
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2018-07-31
  • 2016-03-15
  • 2022-11-17
相关资源
最近更新 更多