如何将字符串分配给vector(都在堆上)

时间:2018-12-18 00:00:52

标签: c++ string pointers vector heap

我正在尝试从文件到矢量获取大约3百万个字符串。我是这样分配的

vector<string> *slownikds = new vector<string>;

当我尝试从文件中退回时:

string *line;   
while (getline(slownik, *line))
    {
            *slownikds->push_back(*line);
    }

它不起作用。如何从文件“ slownik”中推回字符串?

1 个答案:

答案 0 :(得分:7)

请停止此操作。

std::vector被创建,因此您不必自己为容器分配内存。 std::string在那里,因此您不必使用char *或使用固定大小的缓冲区。

请解决:

std::vector<string> slownikds;
std::string line;   
while (getline(slownik, line)) {
    slownikds.push_back(line);
}

出现“错误”的原因可能是以下三种情况之一:

  1. 您没有初始化*line,因此它指向的是未初始化的内存,或者可能指向NULL
  2. 您正尝试通过指针成员访问运算符访问成员函数push_back
  3. foobar之类的东西

在任何情况下,都不能像我上面那样使用指针