将字符数组中的元素范围提取到字符串中
Extract range of elements from char array into string
我想从一个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())
但我不想要所有元素。
谢谢。
你的第二个例子已经很接近了,你可以做
std::string(buffer.begin(), buffer.begin() + numberToExtract)
这是使用指针运算,因为数组使用连续内存。
您不必一路走到 end
:
std::string(buffer.begin(), buffer.begin() + numberToExtract)
或:
std::string(&buffer[0], &buffer[numberToExtract]);
或者使用带指针和长度的构造函数:
std::string(&buffer[0], numberToExtract);
std::string(buffer.data(), numberToExtract);
随机访问迭代器让您可以进行算术运算:
std::string(buffer.begin(), buffer.begin() + numberToExtract);
我想从一个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())
但我不想要所有元素。
谢谢。
你的第二个例子已经很接近了,你可以做
std::string(buffer.begin(), buffer.begin() + numberToExtract)
这是使用指针运算,因为数组使用连续内存。
您不必一路走到 end
:
std::string(buffer.begin(), buffer.begin() + numberToExtract)
或:
std::string(&buffer[0], &buffer[numberToExtract]);
或者使用带指针和长度的构造函数:
std::string(&buffer[0], numberToExtract);
std::string(buffer.data(), numberToExtract);
随机访问迭代器让您可以进行算术运算:
std::string(buffer.begin(), buffer.begin() + numberToExtract);