C++ 如何将字符串分配给向量(都在堆上)
我试图从文件到向量得到大约300万个字符串。我是这样分配的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
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);
}