矢量第一个元素更改值

时间:2014-02-24 06:17:42

标签: c++ vector

我有一个while循环,其目的是构建一个包含可用DLL列表的数组。

  do{
    DLL_List.push_back((char*)FindFileData.cFileName);
    cout << "DLL 0 IS" << DLL_List[0];
    }

while (FindNextFile(hFind, &FindFileData));

问题:DLL_List [0]的值在每次迭代时都会发生变化(使用新找到的DLL文件的名称)!我可以通过cout看到它。为什么?我以为push_back不会修改之前的,我错了吗?

1 个答案:

答案 0 :(得分:3)

看起来你正在存储一个指向一个字符串的指针,当你调用FindNextFile时它会发生变化(尽管你忘了告诉我们DLL_List到底是什么,所以我不能完全确定)

存储std::string。这将保留字符串的副本,而不仅仅是指向它的指针。