我一直在思考以下问题:假设我有一个C风格的函数,它可以将原始数据读入缓冲区。
int recv_n(int handle, void* buf, size_t len);
我能直接将数据读入std:string
或stringstream
中,而不需要分配任何临时缓冲区吗?例如:
std::string s(100, '\0');
recv_n(handle, s.data(), 100);
我猜这个解决方案的结果未定义,因为据我所知,
string::c_str
和string::data
可能会返回临时位置,而不一定返回指向对象用于存储数据的实际内存位置的指针。
有什么想法吗?
const
。 - Mooing Duck