0
버퍼에서 std :: string을 빌드하려고하는데 이상한 문제가 있습니다. 코드의 두 조각이 다른 것 같습니다 :GCC 4.9 std :: string from 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'란 무엇입니까? '꺼짐'이란 무엇입니까? '렌 '이란 무엇입니까? 가치와 내용은 무엇입니까? 문자열에 "추가"문자가 있음을 어떻게 알 수 있습니까? [Minimal, Complete, Verifiable Example] (http://stackoverflow.com/help/mcve)을 작성하여 보내주십시오. –
@dude : 간단한 예제를 준비하려고합니다. –
@nos : 널 (null)로 끝나지 않았 음을 확인합니다. 하지만 내가 알기로 이것은 std :: string 내부에 버퍼를 복사 할 때 문제가되지 않는다. –