将null填充但不终止的固定长度字符数组转换为std :: string的最佳方法

时间:2018-05-04 02:52:29

标签: c++

将固定大小的字符数组转换为std :: strings的最佳方法是什么?以下是我最好的猜测,但有兴趣听听是否还有其他选择。

std::string ToString(const char* buffer, const std::size_t bufferSize)
{
    return std::string(buffer, strnlen_s(buffer, bufferSize));
}

int main()
{
    char buffer1[4] = { 't','e', 's', 't' };
    char buffer2[5] = { 'o','n', 'e', '\0', '\0' };
    auto s1 = ToString(buffer1, sizeof(buffer1));
    auto s2 = ToString(buffer2, sizeof(buffer2));
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您的实施情况很好。

对于编译时知道长度的情况,您可能要做的另一件事就是提供另一个重载,可以从数组推断大小:

glGetTextureImage(textureToReadFrom, 0, GL_RGBA, GL_FLOAT, bufferSize, bufferPointer);