可能重复:
How to force std::stringstream operator >> to read an entire string?
我正在尝试将结构转换为字符串,类似于toString()将如何用于Java或C ++中的对象。为此,我将格式化数据写入std :: stringstream,然后将其写入std :: string。
这就是我所拥有的:
std::stringstream ss;
std::string packet;
ss << "Packet Length: " << p->header->len
<< " (" << p->header->caplen << ")" << std::endl
<< "Collected: " << timedate << "."
<< std::dec << p->header->ts_usecs << std::endl
<< "Eth:\tFrom: " << to_address(p->from) << std::endl
<< "\tTo: " << to_address(p->to) << std::endl
<< "\tType: " << to_hex(p->type, false)
<< " (" << p->type_name << ")" << std::endl;
但出于某种原因,当我将此流写入std :: string数据包时:
ss >> packet;
然后打印数据包的值:
cout << "Packet X " << packet << endl;
我只看到文字"Packet"
而没有其他内容。
我有什么明显的遗失吗?
答案 0 :(得分:8)
答案 1 :(得分:3)
如果您希望从std::string
中获取stringstream
,请执行以下操作:
packet = ss.str();
答案 2 :(得分:0)
StringStream运算符&gt;&gt;像任何其他流运算符&gt;&gt;一样工作。 因此,对于参数字符串(&gt;&gt; to string),它会将数据提供给第一个白色字符(空格,换行,文件结尾等)