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

时间:2015-01-30 12:45:37

标签: 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);
}

有更好的方法吗?

我一直在寻找类似std :: string&#39;迭代器构造函数的东西。例如。 std::string(buffer.begin(), buffer.end())但我不想要所有元素。

感谢。

3 个答案:

答案 0 :(得分:17)

您无需一直前往end

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

或:

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

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

随机访问迭代器允许您进行算术运算:

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