如何在C++中的向量中存储生成的字符串?

Bla*_*iro 1 c++ string vector

我仍然从Java转向C++,我正在努力使用字符串.我需要生成一些字符串并将它们存储在某个地方,以便在创建它们的对象被销毁后它们可用于我的程序.我尝试将它们存储在字符串向量中,但我得到了一个分段错误 - 双重免费.我正在做的基本版本,并重现问题在这里:

#include <string>
#include <sstream>
#include <iostream>
#include <vector>

std::string makeString(){
    std::stringstream s;
    s << "Test string";
    return s.str();
}

int main(){
    std::vector<std::string> storage;
    storage.reserve(1);
    storage[0] = makeString();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

调试器标记行中的错误:

storage[0] = makeString();
Run Code Online (Sandbox Code Playgroud)

我将非常感谢并深入了解这里发生了什么,以及如何避免它.

izo*_*ica 5

vector.reserve不会改变矢量的大小.你将不得不使用resize而不是reserve.另一种选择是使用push_back():

 storage.push_back(makeString());
Run Code Online (Sandbox Code Playgroud)