std::vector<string>转string
2017-09-16 12:41
3811 查看
背景:
将vector<string>在不经过for遍历的前提下转为一个字符串。
方案1:
采用
accumulate函数
#include <vector> #include <string> #include <numeric> #include <iostream> int main() { std::string lastdata; std::vector<std::string> veckrcid; veckrcid.push_back("hello"); veckrcid.push_back("world"); lastdata = accumulate(veckrcid.begin(), veckrcid.end(), lastdata); std::cout<<lastdata.c_str()<<std::endl;// }
输出:
helloworld
方案2:
通过boost中的join函数:
#include <boost/algorithm/string/join.hpp> int main() { std::vector<std::string> StrVec{"Hello,", " liu ", "World!"}; std::string result = boost::algorithm::join(StrVec, ""); std::cout<<result<<std::endl;// }
注意,需要在c11的编译器下,这是因为上述的
std::vector<std::string>初始化方式是需要在C11下才支持的。
网络介绍的一种方法,其实是不可行的。因为在
assign操作的时候
begin()其实是需要
string的迭代器,但是这里的
begin()其实是 vector下的,所以下面的代码会在编译的时候直接报错。
std::vector<std::string> StrVec{"Hello, ", " liu ", "World!"}; std::string result; result.assign(StrVec.begin(), StrVec.end());//是不行的 std::cout<<result.c_str()<<std::endl;// return 1;
下述的改进版不会像上面的那样报错,但是运行结果并不是预期的:
std::vector<std::string> StrVec{"Hello,", " liu ", "World!"}; std::string result; result.assign(StrVec[0].begin(), StrVec[1].end());//是不行的 std::cout<<result.c_str()<<std::endl;// return 1;
因为vector中的每个元素都是独立的,无法指定第0个元素的首地址和最后元素的末尾地址就可以将整个vector进行遍历。
相关文章推荐
- 实战c++中的vector系列--使用sort算法对vector进行排序(对vector<string>排序、使用稳定的排序std::stable_sort())
- std::vector<std::string>::size_type和 int的区别
- 实战c++中的string系列--std:vector<char> 和std:string相互转换(vector to stringstream)
- 实战c++中的string系列--std:vector<char> 和std:string相互转换(vector to stringstream)
- c++ std::sort用法详细(对std::vector<int>, 对std::vector<std::string>, std::vector<char>等等)
- Why isn't main defined `main(int argc, std::vector<std::string> argv)`?
- class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<ch
- 关于std::vector<std::string>的操作
- std::vector<string>的find();与erase();
- 实战c++中的string系列--std:vector<char> 和std:string相互转换(vector to stringstream)
- C++文本查询程序 定义类管理数据 用智能指针 用StrBlob代替vector<string> C++Primer 练习12.32
- std::vector<char>* buffer 转换为 char*
- C++primer习题3.14 vector<string>读写字符
- "std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const"问题的解决办法
- error: no matching function for call to 'std::basic_ifstream<char>::open(std::string&)
- c++ primer(第五版)笔记 第十三章(4) string 类和 vector<string> 容器的简单实现
- C++文本查询程序 定义类管理数据 用智能指针 用StrBlob代替vector<string> C++Primer 练习12.32
- 反序列化(先序)——split : string-->vector<string>
- std::wstring<-->std::string,char<-->wchar_t
- 不允许使用“{...}”对”std::vector<int,std::allocator<int> >“类型的对象进行初始化