如何从std :: vector <char>构造一个std :: string?

(明显的)build立一个C风格的string,然后用它来创build一个std ::string,有一个更快/替代/“更好”的方式来初始化一个string从一个字符的向量?

那么,最好的方法是使用下面的构造函数:

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())或者,如果你的向量在最后不包含'\0'std::string(v.data(), v.size())

 std::string s(v.begin(), v.end()); 

v几乎是任何可迭代的东西。 (特别是begin()和end()必须返回InputIterators。)

只是为了完整性,另一种方式是std::string(&v[0]) (尽pipe你需要确保你的string是以null结尾的,而std::string(v.data())通常是首选的。

不同之处在于,您可以使用前一种技术将向量传递给想要修改缓冲区的函数,而使用.data()则无法完成该function。