读书人

怎么用vector定义string类型的指针变量

发布时间: 2012-10-21 09:00:07 作者: rapoo

如何用vector定义string类型的指针变量
我正在学习C++ PRIMER,第五章有个5.18题目,说要定义一个vector对象,每个元素都是指向string类型的指针
我用了以下两种方式,VC++ 6.0都提示错误了:
#include <vector>
using std::vector;
......
string s1("I am Aka");
1/ vector<string *> sp(&s1);
2/ vector<sting> *sp(&s1);
求大侠指教。

[解决办法]
写错鸟
vector<sting*> sp;
sp.push_back(&s1);
[解决办法]
VS6.0对于模板甚至C++标准都有支持不完善之处,换GCC或者更高版本的VS
一般使用模板——特别是标准库——时<和>要注意两边留个空格,否则很容易凑成<<和>>操作符
2/的string写成了sting,而且该语句定义的是一个指向vector的指针,不能这么初始化
此外,string也是std命名空间里的,你using了吗
[解决办法]

C/C++ code
error C2653: 'vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *> >' : is not a class or namespace name
[解决办法]
C/C++ code
#include <iostream>#include <vector>#include <string>using namespace std;int main(){    vector<string *> svec;    string s1 = "hello ";    string s2 = "c++!";    svec.push_back(&s1);    svec.push_back(&s2);    vector<string *>::iterator itr;    for (itr = svec.begin(); itr != svec.end(); ++itr)        cout << **itr;    return 0;}
[解决办法]
vs2008 output:
hello c++!

楼主如果学习STL的话,最好换用vc2008或者更新的版本
[解决办法]
探讨
用了楼上的方案,编译不出错了
但是,
cout << *iter << endl;
这个打印出来怎么是个地址呢?这里我不是解引用了吗?

读书人网 >C++

热点推荐