Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将字符串分配给向量(都在堆上)_C++_String_Pointers_Vector_Heap - Fatal编程技术网

C++ 如何将字符串分配给向量(都在堆上)

C++ 如何将字符串分配给向量(都在堆上),c++,string,pointers,vector,heap,C++,String,Pointers,Vector,Heap,我试图从文件到向量得到大约300万个字符串。我是这样分配的 vector<string> *slownikds = new vector<string>; 它不起作用。如何从文件“slownik”中推回字符串?请停止此操作 std::vector的创建是为了您不必自己为容器分配内存标准::字符串的存在使您不必使用字符*或使用固定大小的缓冲区 请修复: std::vector<string> slownikds; std::string line; wh

我试图从文件到向量得到大约300万个字符串。我是这样分配的

vector<string> *slownikds = new vector<string>;
它不起作用。如何从文件“slownik”中推回字符串?

请停止此操作

std::vector
的创建是为了您不必自己为容器分配内存<代码>标准::字符串的存在使您不必使用
字符*
或使用固定大小的缓冲区

请修复:

std::vector<string> slownikds;
std::string line;   
while (getline(slownik, line)) {
    slownikds.push_back(line);
}
std::向量慢性病;
std::字符串行;
while(getline(slownik,line)){
慢动作。向后推(线);
}

出现“错误”的原因有三种:

  • 您没有初始化
    *行
    ,因此它指向未初始化的内存,或者可能是
    NULL
  • 您正试图通过指针成员访问操作符访问成员函数
    push_back
  • 食物吧

  • 在任何情况下,像上面那样使用指针是答案

    通常动态创建向量不会带来任何好处。它已经在后台动态存储了所有数据。与
    std::string
    slownikds
    相同的是
    vect
    ?请注意,字符串和向量将其内容存储在堆上,而不管您是否使用
    new
    创建它们。此外,您的代码不会将字符串推送到向量中,因为您没有为该指针分配字符串。它现在指向随机空间。你不太可能需要或想要动态创建向量、字符串或其他容器。
    std::vector<string> slownikds;
    std::string line;   
    while (getline(slownik, line)) {
        slownikds.push_back(line);
    }