13

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

这就是我想出的。

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

std::string message;

for (int i = 0; i < numberToExtract; ++i)
{
    message += buffer.at(i);
}

有一个更好的方法吗?

我一直在研究类似 std::string 的迭代器构造函数。例如 std::string(buffer.begin(), buffer.end()),但我不想要所有的元素。

谢谢。

4

3 回答 3

24

您不必一路走到end

std::string(buffer.begin(), buffer.begin() + numberToExtract)

或者:

std::string(&buffer[0], &buffer[numberToExtract]);

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

std::string(&buffer[0], numberToExtract);
std::string(buffer.data(), numberToExtract);
于 2015-01-30T12:46:57.873 回答
2

你的第二个例子很接近,你可以做

std::string(buffer.begin(), buffer.begin() + numberToExtract)

这是使用指针算法,因为数组使用连续内存。

于 2015-01-30T12:46:42.093 回答
1

随机访问迭代器让您可以进行算术运算:

std::string(buffer.begin(), buffer.begin() + numberToExtract);
于 2015-01-30T12:46:59.017 回答