0
我试图从缓冲区生成一个std :: string,但我有一个奇怪的问题。 似乎这种两件式的代码是不同的:GCC 4.9 std :: string const char *
std::string myfun()
{
....
std::string rv{};
if (....)
{
char ibuff[256];
memcpy(ibuff, m_buffer + off - 28, len);
ibuff[len] = 0;
rv.assign(ibuff);
}
...
return rv;
}
和
std::string myfun()
{
....
std::string rv{};
if (....)
{
rv.assign(m_buffer + off - 28, len);
}
...
return rv;
}
我可以看到在第二情况下的额外的(不可打印)字符。
什么是'm_buffer'?什么是“关”?什么是'len'?他们的价值观和内容是什么?你怎么知道字符串中有一个“额外”字符?请创建一个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)并向我们显示。 –
@dude:我试着编写一个简单的例子 –
@nos:肯定是不是以null结尾。但从我知道这是不是一个问题,当你在std :: string中复制一个缓冲区 –