新手有疑惑,麻烦大家帮我指点下。
C++ primer(四版) 习题5.18题目 /编写程序定义一个vector对象,其每个元素指向string类型的指针,读取该vector对象,输出每个string的内容,及其对应的长度。
源代码:
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<string *> svec;
string str;
cout<<"enter some strings(Ctrl +z to end)\n";
while(cin>>str)
{
string *pstr=new string;
*pstr=str;
svec.push_back(pstr);
}
for(vector<string *>::iterator iter=svec.begin();iter!=svec.end();iter++)
{
cout<<**iter<<" "<<(**iter).size()<<endl;
}
return 0;
想问下 为什么 while 循环中要用的动态分配呢 ?
为什么不可以把代码改成
string * pstr;
*pstr=str;
svec.push_back(pstr);
我试了下 若输入 here you are
前者的输出结果符合题意
但是后者的输出结果 是 are 3
are 3
are 3 呢?