如何在每个元素</std :: string>中使用自定义字符串设置std :: vector <std :: string>

时间:2014-04-01 06:37:48

标签: c++ stdvector stdstring

我有配置,我需要设置成某种容器 我尝试设置为std :: vector 但我在两个方面都得到了编译错误:

 std::vector<std::string> ConfigVec= new std::vector<std::string>();
  ConfigVec->at(0).append("00000\
              11111\
               00000");

    ConfigVec->at(1) = "11111\
             00000\
            00000";

在没有很多std :: string声明的情况下,最简单的方法是什么

2 个答案:

答案 0 :(得分:5)

首先,删除指针并new 1 。其次,你追加的是不存在的元素。将字符串推回矢量。

std::vector<std::string> ConfigVec;

ConfigVec.push_back("000001111100000");
ConfigVec.push_back("111110000000000");

等等。

如果你有少量字符串,你可以直接初始化向量(除非你已经坚持使用C ++ 11之前的实现):

std::vector<std::string> ConfigVec{"000001111100000", "111110000000000"};

1 *您使用ConfigVec作为指针(将new的结果分配给它,并使用->访问其成员),但是它实际上并没有被宣布为一个。这本身就是一个错误。在任何情况下,使用new和原始指针在C ++中动态分配资源的情况都很少。

答案 1 :(得分:1)

std::vector<std::string> ConfigVec= new std::vector<std::string>();

这是&#34; java-nese&#34;:std::vector<std::string> ConfigVec只是字符串本身的一个vectcor。 ConfigVect.push_back("text")只会在最后添加一个字符串。

或者你的意思是

std::vector<std::string>* ConfigVec= new std::vector<std::string>();
//----------------------^-----------<< note taht!

在任何情况下,您都无法在空白的向量上使用at(或[]),请先取消对其进行适当调整