使用std :: copy复制单个字符

Avi*_*ash 0 c++ stl

我正在尝试std::copy从两个不同的迭代器中复制.但在执行过程中,这两个迭代器可以指向同一位置.为什么在这种情况下他们不会复制单个字符.

std::string str1 = "ABC";
std::string::iterator itr1 = str1.begin();
std::string::iterator itr2 = str1.begin();
std::string result;
std::copy(itr1,itr2,result.begin());
Run Code Online (Sandbox Code Playgroud)

Arm*_*yan 7

STL范围的右边界不包括在内.如果给它两次相同的迭代器,结果是一个空范围.你要这个:

std::copy(itr1,itr2+1,result.begin());
Run Code Online (Sandbox Code Playgroud)

但是,请注意您正在写入没有保留内存的位置,这是未定义的行为.你必须使用back_insert_iterator

std::copy(itr1,itr2 + 1, std::back_inserter(result));
Run Code Online (Sandbox Code Playgroud)