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遍历的主要内容,如果未能解决你的问题,请参考以下文章

c++用sort对vector排序问题

c++用sort对vector排序问题

C++ string 分割成 vector 分隔符

C++ string 分割成 vector 分隔符

c++ 把string类型的h1,赋值给vector<string>类型的h2

C++ 向量分配器错误