Как построить строку std::из вектора std::?



Если не считать (очевидного) построения строки стиля C, то сначала используйте ее для создания std::string, есть ли более быстрый/альтернативный/"лучший" способ инициализации строки из вектора символов?

473   5  
c++

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

    Ничего не найдено.