我的问题与以下代码有关:
void znajdzNastepnyElement(fstream& baza, unsigned int& licz_zaglebienie, unsigned long long int& kursor, unsigned long long int& poczatek_elementu, const unsigned int& dl_baza) {
char znak = '\0';
if (kursor <= dl_baza) {
while (znak != '{' && kursor <= dl_baza) {
baza.seekg((kursor) * sizeof(char), ios::beg);
baza.read(&znak, sizeof(char));
cout << endl << "Znak =" << znak << "Kursor = " << kursor << endl;
if (znak == '{') {
licz_zaglebienie++;
poczatek_elementu = kursor;
}
if (znak == '}')
licz_zaglebienie--;
kursor++;
}
cout << "Szukam elementu" << endl;
}
}
从根本上讲,它是要在json文件中找到以下“ {”字符(充满了这些花括号)。对该函数的调试表明,只有在第一次执行程序时,该函数才会将“ {”保存到&znak中,此后,除了“ \ 0”之外什么都没有(实际上取决于我在{{1}行中保存到'znak'中的内容})替换该值。更令人困惑的是,它仅在json文件中的第一个字符为“ {”时才发生,每个下一个匹配字符对程序都没有这种影响。需要明确的是,“ {”的出现不会导致函数外的任何形式的“ fstream close”。