向量的第一个元素转换器值

Vector's first element changrs value

本文关键字:转换器 元素 第一个 向量      更新时间:2023-10-16

我有一个do 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不会修改以前的,我错了吗?

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

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