为什么 push_back() 会改变之前的值?

Why push_back() will change the previous value?

我想通过一个for循环构建一系列带有序号的路径,所以我使用了一系列strcpystrcat(我知道有一个string方法,还请见谅,我的技术实在是太差了)。但是在循环之后,我得到了一系列相同的结果。

这是我的代码:

#include <iostream>
#include <io.h>
#include <vector>

vector<char*> TempFilePath;    
char temp[300];
strcpy(temp, EndFilepath);
strcat(temp, "\Temp");
createDirectory(temp);
char TempFilePathChar[300];
for (int j = 0; j < filevector.size(); j++)
{
    int number = j + 1;
    char TEMPNum[1];
    itoa(number, TEMPNum, 10);
    strcpy(TempFilePathChar, temp);
    strcat(TempFilePathChar, "\tempData");
    strcat(TempFilePathChar, TEMPNum); 
    strcat(TempFilePathChar, ".tif");
    strcpy(TempFilePathChar, TempFilePathChar);
    TempFilePath.push_back(TempFilePathChar);
}

EndFilepath="E:\"filevector的大小是2,毫无疑问,我想得到流水的结果:

TempFilePath[0]="E:\Temp\tempData1.tif"
TempFilePath[1]="E:\Temp\tempData2.tif"

但是在运行之后,结果是这样的:

 TempFilePath[0]="E:\Temp\tempData2.tif"
 TempFilePath[1]="E:\Temp\tempData2.tif"

谁能告诉我为什么以及如何更改它?

注意:我还是想用vector而不是vector,因为我用了很多网络上的函数,它们的return值和输入值都是char *类型.当然,如果有方法的话,还是可以达到上述目的的。再次感谢

你的vector的元素都是相同的指针值,数组的地址TempFilePathChar。在您的循环中,您将覆盖该数组的内容,因此您始终获得循环最后一次迭代产生的内容。