//自己写的,还存在些问题,望高手指点~
#include <sstream>
#include <vector>
#include <iostream>
#include <string>
using namespace std;
const string* table[100]={0};
int size=100;
vector<string> vst;
void markTable(const string* table[], int& size){
int count=0; //count记录存储的单词数
int flag=0; //标记当前单词是否已经在vector中,0为不存在,1为已存在
string s; //s存储当前输入的字符串
cout<<"输入字符串:";
getline(cin,s); //控制台输入s
istringstream isst(s);
string word;
//将原字符串中的每个单词都保存到vector容器vst中
while (isst>>word)
{
flag=0;
if(word=="quit"||count==size) break;
else
{
for(vector<string>::const_iterator cit=vst.begin();cit!=vst.end();cit++){
if(word==*cit) {flag=1;break;}
}
if(flag==0) {
vst.push_back(word);count++;
}
//flag=0;
}
}
/*
for (vector<string>::const_iterator cit=vst.begin(); cit!=vst.end(); cit++) {//验证是否存入vector
cout<<*cit<<endl;
}
*/
int i=0;
//使table中的指针指向每个单词
for (vector<string>::const_iterator cit1=vst.begin(); cit1!=vst.end(); cit1++) {
table[i]=cit1;
//cout<<*(table[i])<<endl;//验证table中的指针是否成功指向每个单词
i++;
}
}
void test(){
cout<<"验证是否存入vector"<<endl;
for (vector<string>::const_iterator cit=vst.begin(); cit!=vst.end(); cit++) {//验证是否存入vector
cout<<*cit<<endl;
}
cout<<"验证table中的指针是否成功指向每个单词"<<endl;
int i=0;
for (vector<string>::const_iterator cit1=vst.begin(); cit1!=vst.end(); cit1++) {
cout<<*(table[i])<<endl;//验证table中的指针是否成功指向每个单词
i++;
}
}
int main(void)
{
while(1){
cout<<"输入字符串的字数:";
cin>>size;
cin.get();//回收输入size的值时输入的换行符
markTable(table,size);
test();
}
system("pause");
return 0;
}
转载于:https://blog.51cto.com/hushuaiqi/891949