如何从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。