问题描述
- vector<string>中,迭代器指向的某个字符是什么类型
-
string a; cin>>a; int Count=0; int x=0;int y=0; int buf1[10],buf2[10]; char t; vector<string> str(1,a); for(vector<string>::iterator be=str.begin();be!=str.end();++be){ if(*be>="0"&&*be<="9"){ ++Count; x+=*be; //此处编译器反馈类型错误。 if(be+1!=str.end()) continue; } buf1[y]=Count;buf2[y]=x; Count=0;x=0;++y; } 求大牛们教育
解决方案
应该是一个被包装过的string类型。这个迭代器是一个接口,在向量模板中对一些运算符进行了重载,所以用指针运算符+迭代器的时候,就返回了当前迭代器所指向的string变量。
关于迭代器,可参看 http://www.daxueit.com/article/3101.html
解决方案二:
#include
#include
#include
using namespace std;
void Test()
{
string a;
cin>>a;
int Count=0;
int x=0;
int y=0;
int buf1[10],buf2[10];
char t;
vector str(1,a);
for(vector::iterator be=str.begin();be!=str.end();++be){
if(*be>="0"&&*be<="9"){
++Count;
x+=atoi(be->c_str()); //此处编译器反馈类型错误。
if(be+1!=str.end())
continue;
}
buf1[y]=Count;
buf2[y]=x;
Count=0;
x=0;
++y;
}
}
int main(int argc,char **argv)
{
Test();
return 0;
}
//*be就是指一个string元素,be就是该元素的指针,迭代器就是一种特殊指针
//x是int类型,所以运算符右边也应当是int类型
时间: 2024-11-16 00:06:11