谢谢帮忙

onejian 2010-07-13 10:11:53
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<string *> inter;
string p;
while (cin >>p &&p!="end"){
string *q=&p;
inter.push_back(q);
}
for(vector<string*>::iterator m=inter.begin();m!= inter.end() ; m++)
cout << **m<<endl;
return 0;
}

定义一个vector对象,每个元素都是指向string的指针,读入多个字符串,读入end表示读入结束,
输出每个string的内容。程序错哪里了,谢谢帮忙!
...全文
60 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-07-13
  • 打赏
  • 举报
回复
要么你的string* q=new string;
不过你记得最后要delete

#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<string> inter;
string p;
while (cin >>p &&p!="end")
{
inter.push_back(p);
}
for(vector<string>::iterator m=inter.begin();m!= inter.end() ; m++)
cout << *m<<endl;

return 0;
}
笨笨周0915 2010-07-13
  • 打赏
  • 举报
回复

int main()
{
vector<string > inter;
string p;
while (cin >>p &&p!="end"){
string q=p;
inter.push_back(q);
}
cout<<"Input Result"<<endl;
for(vector<string>::iterator m=inter.begin();m!= inter.end() ; m++)
cout << *m<<endl;
system("pause");
return 0;
}

你使用的vector保存的是p的地址,但是p的地址不会变,所以你vector保存都是p的地址,那么在输出的时候
都是最后一次输入的内容,改成上面的就ok了
jiuchang 2010-07-13
  • 打赏
  • 举报
回复
你vector里保存的是指针,而指针指向的对象都是p
liao05050075 2010-07-13
  • 打赏
  • 举报
回复
string *q=&p

每次取的都是同一个p的地址,于是,inter里面的全是同一个字符串指针,最后输出的是全是最后一个输入的字符串。

要么将inter改成vector<string>型,然后每次push一个string进去。
要么就改成每次cin前先申请一个新的string
onejian 2010-07-13
  • 打赏
  • 举报
回复
谢谢楼上各位对我的帮助
wyz007134 2010-07-13
  • 打赏
  • 举报
回复
这个你看下输出,就能知道问题了

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧