5 ответов:
Ну, лучший способ-использовать следующий конструктор:
template<class InputIterator> string (InputIterator begin, InputIterator end);что приведет к что-то вроде:
std::vector<char> v; std::string str(v.begin(),v.end());Я надеюсь, что это помогает.
Я думаю, что вы можете просто сделать
std::string s( MyVector.begin(), MyVector.end() );где MyVector - это ваш std::vector.
С C++11, вы можете сделать
std::string(v.data())или, если ваш вектор не содержит''в концеstd::string(v.data(), v.size()).
std::string s(v.begin(), v.end());где v-это почти все, что можно повторить. (В частности, begin() и end () должны возвращать InputIterators.)
просто для полноты, другой способ
std::string(&v[0])(хотя вам нужно убедиться, что ваша строка завершается нулем иstd::string(v.data())обычно является предпочтительным.разница заключается в том, что вы можете использовать первый метод для передачи вектора в функции, которые хотят изменить буфер, что вы не можете сделать .данные.)(
Comments