我有配置,我需要设置成某种容器 我尝试设置为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声明的情况下,最简单的方法是什么
答案 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
(或[]
),请先取消对其进行适当调整