将char数组中的元素范围提取到字符串中

ksl*_*ksl 9 c++ arrays string c++11 stdarray

我想从char数组的开头提取一系列元素并将它们放入一个字符串中.范围可以小于或等于元素的数量.

这就是我想出的.

// buffer is a std::array<char, 128>

std::string message;

for (int i = 0; i < numberToExtract; ++i)
{
    message += buffer.at(i);
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

我一直在寻找像std :: string的迭代器构造函数.例如, std::string(buffer.begin(), buffer.end())但我不希望所有的元素.

谢谢.

Bar*_*rry 18

你不必一直走到end:

std::string(buffer.begin(), buffer.begin() + numberToExtract)
Run Code Online (Sandbox Code Playgroud)

要么:

std::string(&buffer[0], &buffer[numberToExtract]);
Run Code Online (Sandbox Code Playgroud)

或者使用带有指针和长度的构造函数:

std::string(&buffer[0], numberToExtract);
std::string(buffer.data(), numberToExtract);
Run Code Online (Sandbox Code Playgroud)