GCC 4.9 std::string from const char*



我试图从缓冲区建立一个std::字符串,但我有一个奇怪的问题。似乎这两段代码是不同的:

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;
}

我可以看到一个额外的(不可打印的)字符在第二个大小写

问题像往常一样在代码的其他部分!事实上,这段代码按预期工作。

#include <iostream>
int main()
{
    char buff[512];
    std::string rv{};
    for (size_t i = 0; i < 512; i++)
        buff[i] = i & 0xef;

    buff[179] = 'X';
    buff[180] = 'Y';
    buff[181] = 'Z';
    buff[182] = '.';
    uint16_t off = 179;
    uint16_t len = 4;
    rv.assign(buff + off, len);
    std::cout << "[[[" << rv << "]]]n";
}

相关内容

  • 没有找到相关文章

最新更新