我有一个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++标准库是无济于事的。 –