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中複製一個緩衝區 –