为什么我读的所有字符串在打印它们时都以相等的方式结束

  • 本文关键字:结束 方式 字符串 打印 c++
  • 更新时间 :
  • 英文 :


我正在学习C++,书中有一个问题。

问:编写一个程序,用于定义指向字符串的指针向量。读取向量, 打印每个字符串及其相应的大小。

法典:

vector<string*> v;
string str;
cout<<"Enter your string:"<<endl;
while(cin >> str)                            // input 
{
          string *ps=&str;
          v.push_back(ps);
}
vector<string*>::iterator iter=v.begin();
while( iter!=v.end())                         // output
   cout<< **iter++<<" "<<(**iter).size()<<endl;

当我输入"a sd fgh"时,我希望输出为"a 1;SD 2;FGH 3";但输出是"FGH 3;FGH 3;FGH 3." 有谁知道哪里出了问题?

你会得到相同的输出,因为你所有的字符串都指向同一个地方 - 即你的str变量。您应该使用缓冲区str 的数据创建新字符串,如下所示:

std::string *ps = new string(str);

执行此操作后,当您不再需要字符串时,不要忘记删除通过在函数末尾的每个字符串指针上调用 delete ptr 来分配的字符串。

>我会给你一个线索:std::string *ps = &str是一个非常糟糕的主意。每个指针都需要自己的内存。

相关内容

最新更新