Вы вставляете невизуальные управляющие символы ASCII в свой вектор.Вместо этого необходимо вставить визуальные символы ASCII:
// note the use of single quotes!
vec.push_back('1');
vec.push_back('4');
vec.push_back('7');
vec.push_back('4');
vec.push_back('9');
vec.push_back('7');
char(1)
имеет числовое значение 1. char('1')
имеет числовое значение 49 в ASCII.
Кроме того, поскольку вы вставляете символы в test
в конце строки, рассмотрите возможность использования std::back_inserter
вместо std::inserter
(в любом случае вам не нужно проверять vec.empty()
какстандартные алгоритмы прекрасно работают с диапазонами итераторов, где begin == end
):
std::string test;
std::copy(vec.begin(), vec.end(), std::back_inserter(test));
Или просто используйте конструктор std::string
, который принимает итераторы в качестве входных данных:
std::string test(vec.begin(), vec.end());