У меня есть один класс 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, а затем работал там. Но мне нужно сделать сравнение в другом классе, так что я могу использовать тот же класс CSVReader для других файлов CSV.
Указатели и функции C. Что может пойти не так? Это потому, что вы используете один буфер, все векторные элементы ссылаются на него, а затем он уничтожается. Пожалуйста, используйте стандартную библиотеку C++. – LogicStuff
Что это за «мусор»? Как определяется Utf8Char? – user3684240
@LogicStuff Если программист не может узнать область локальных переменных и как обращаться с простыми указателями, использование стандартной библиотеки C++ не поможет. –