我有一個CSVReader類,它有這個功能爲什麼Utf8Char的向量值正在改變?
vector<UtfChar*> CSVFile::ReadFile(FILE* fp)
{
//int count = 0;
Utf8Char buff[256];
fgets(buff, 256, (FILE*)fp);
// count++;
Utf8Char *token = strtok(buff, ",");
bvector<UtfChar*> localVec;
while (token != NULL)
{
localVec.push_back(token);
token = strtok(NULL, ",");
}
return localVec;
}
現在我有另一個類,從中我調用這個函數:
FILE *fp;
fp = fopen("SampleFile.csv", "r");
while((getc(fp)) != EOF)
{
bvector<Utf8Char*> localVec = csvFile.ReadFile(fp);
}
我在這裏比較localVec
值與一些集價值(char*
)我有。但在另一個類中,當我嘗試訪問像localVec[0]
或l ocalVec[1]
這樣的向量時,它會給出垃圾。 我試着在CSVReader類中進行比較,然後在那裏工作。但是我需要在其他類中進行比較,以便我可以爲其他CSV文件使用相同的CSVReader類。
指針和C函數。有什麼可以出錯的?這是因爲你使用了一個緩衝區,所有的矢量元素都引用它,然後它被破壞。請使用C++標準庫。 – LogicStuff
它給了什麼樣的「垃圾」? Utf8Char是如何定義的? – user3684240
@LogicStuff如果程序員不能學習局部變量的範圍以及如何處理簡單的指針,那麼使用C++標準庫是無濟於事的。 –