C++向量字符串for循环push_back错误

aly*_*lyx 1 c++ string for-loop vector push-back

我觉得这是一个明智的选择,但出于某种原因,我无法理解发生了什么.

当我运行我的代码的这部分,即将URL与数组中的字符串元素组合,然后将其推送到字符串向量时,它会成功推送第一个URL,但之后会出现某种内存泄漏?控制台无限循环乱码......

string anonlist[] = {"test1","test2","test3","test4","test5","test6","test7"};


for (int i=0; i<=7; i++)
{

    vector<string> nameurl; 
    nameurl.push_back("http://api.twitter.com/1/users/show.json?screen_name="+anonlist[i]);

    cout << nameurl[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 6

索引中有7个项目索引为0 1 2 3 4 5 6.您的循环还将包括i = 7的情况,该情况超出了数组的范围.

另一个问题是您在循环内部声明了向量,这意味着每次循环继续时都会创建一个新向量.你应该在循环之前声明它.

string anonlist[] = {"test1","test2","test3","test4","test5","test6","test7"};

vector<string> nameurl; 
for (int i=0; i < 7; i++)
{

    nameurl.push_back("http://api.twitter.com/1/users/show.json?screen_name="+anonlist[i]);

    cout << nameurl[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)