c++ vector<string>用iterator遍历
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ vector<string>用iterator遍历相关的知识,希望对你有一定的参考价值。
int main()
string arr[4]="hello","world","name","address";
vector<string> ivec(arr,arr+4);
for(vector<string>::iterator iter1=ivec.begin();iter1!=ivec.end();++iter1)
for(vector<string>::size_type sty=0;sty!=(*iter1).size();++sty)
cout<<(*iter1).size()<<endl;
cout<<iter1[sty]<<endl;
return 0;
如上代码,我想要实现将ivec中的每个string一个字母一个字母地输出,但是每次输出都是一个单词,并且陷入了死循环……
#include <iostream>
#include <vector>
#include <string>
using namespace std ;
int main()
string arr[4]="hello","world","name","address";
vector<string> ivec(arr,arr+4);
for(vector<string>::iterator iter1=ivec.begin(); iter1!=ivec.end(); ++iter1 )
cout<<(*iter1).size()<<endl; //每个单词输出一次长度
for( size_t sty=0;sty!=(*iter1).size(); ++sty)
cout<< (*iter1)[sty] ; //*iter1才是string数据
cout <<endl ;
return 0;
参考技术A int main()
string arr[4]="hello","world","name","address";
vector<string> ivec(arr,arr+4);
for(vector<string>::iterator iter1=ivec.begin();iter1!=ivec.end();++iter1)
for(vector<string>::size_type sty=0;sty!=(*iter1).size();++sty)
//cout<<(*iter1).size()<<endl;//这句意义不明
cout<<(*iter1)[sty]<<endl;//cout<<iter1[sty]<<endl;//应先通过迭代器寻址再使用[]算符
return 0;
追问
不好意思呀,我先看到了上一个回复,正好也解决了我的问题,谢谢你的解答!
C++ string 分割成 vector 分隔符
用boost的split
可以指定多种分隔符
#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/split.hpp>
using namespace std;
int main()
string s = "sss/ddd,ggg";
vector<string> vStr;
boost::split( vStr, s, boost::is_any_of( ",/" ), boost::token_compress_on );
for( vector<string>::iterator it = vStr.begin(); it != vStr.end(); ++ it )
cout << *it << endl;
return 0;
以上是关于c++ vector<string>用iterator遍历的主要内容,如果未能解决你的问题,请参考以下文章