在c ++

时间:2019-03-13 10:46:05

标签: c++ string

我正在尝试将写入向量中-我使用int向量完成了此操作,并且工作正常-所以我怀疑使用字符串时我需要以不同的方式进行操作-但尽管我了解我的编译错误告诉我我正在尝试使用不兼容的类型-我不知道为什么,因为我认为我已经声明了所有内容并正确使用了它-有人可以告诉我我怎么弄错了?

这是我要使用的代码:

#include <vector>
#include <iostream>
#include <string>

int main()
{
   std::vector<std::string> strArray;
   std::vector<int>::const_iterator y;

   std::string iString = "";

   while (iString != "quit")
   {
      std::cout << "Enter string: ";
      std::cin >> iString;
      iString.push_back(iString);
   }

   std::cout << "Your list is:\n";
   for (y= iString.begin(); y <= iString.end(); y++)
   {
      std::cout << (*y)
                << std::endl;
   }
   std::cout <<  std::endl;

   return 0;
}

这是错误消息:

check10a.cpp: In function ‘int main()’:
check10a.cpp:57:32: error: no matching function for call to ‘std::basic_string<char>::push_back(std::string&)’
       iString.push_back(iString);

我真的很感谢这里的指针...

2 个答案:

答案 0 :(得分:3)

编译器会告诉您,带有std::basic_string<char>::push_back参数的std::string不存在。

使用operator+=iString += iString


您可能想要strArray.push_back(iString)

答案 1 :(得分:1)

仅仅为了其他可能会发现此问题的人的利益-这是我的代码中的另一个错误,实际上我不了解围绕迭代器的必要概念:

此行:

 this.gridApi.sizeColumnsToFit();

实际上必须是:

std::vector<int>::const_iterator y;

如果我理解这一权利-这是因为被声明的迭代器需要与集合类型兼容,因此它正在迭代...