Ошибка C ++: читаемый размер составляет '(unsigned int) * 280 + 4' байта, но может быть прочитано '560' байтов. при работе с массивом структур - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь заполнить массив структуры некоторыми данными внутри текстового файла. Когда я запускаю код, он направляет меня к xmemory, показывает некоторое предупреждение, и программа застревает. Я прикрепил предупреждающее сообщение под кодом.

Перед запуском не отображаются красные линии.

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>

using namespace std;

struct date {
    int day;
    int month;
    int year;
};

struct tutorRecord {
    string TutorID;
    string Name;
    date DateJ;
    date DateT;
    string payrate;
    string Phone;
    string address;
    string TCcode;
    string TCname;
    string Scode;
    string Sname;
    int rating;
    tutorRecord() {}
    tutorRecord(string id, string name, int dayjoined, int monthjoined, int yearjoined, int dayterminated, int monthterminated, int yearterminated, 
        string rate, string phone, string tcode, string tname, string ads, string scode, string sname, int star) {
        TutorID = id;
        Name = name;
        DateJ.day = dayjoined;
        DateJ.month = monthjoined;
        DateJ.year = yearjoined;
        DateT.day = dayterminated;
        DateT.month = monthterminated;
        DateT.year = yearterminated;
        payrate = rate;
        Phone = phone;
        TCcode = tcode;
        TCname = tname;
        address = ads;
        Scode = scode;
        Sname = name;
        rating = star;
    }
};

class fileio {
private:

public:
    int scan() {
        ifstream myfile;
        string line;
        int count = 0;
        myfile.open("tutorrecord.txt");
        while (getline(myfile, line)) {
            count++;
        }
        return count;
    }
};

void getlist();

int main() {
    getlist();
    return 0;
}

void getlist() {
    string line;
    int tut = 0;
    fileio filing;
    ifstream file;
    int size = filing.scan();
    tutorRecord* list = new tutorRecord[size];
    file.open("tutorlist.txt");
    while (getline(file, line)) {
        stringstream ss(line);
        string tutor[16];
        string thing;
        int i = 0;
        while(getline(ss, thing, ';')){
            tutor[i] = thing;
            i++;
        }

        int jday = stoi(tutor[2]);
        int jmonth = stoi(tutor[3]);
        int jyear = stoi(tutor[4]);
        int tday = stoi(tutor[5]);
        int tmonth = stoi(tutor[6]);
        int tyear = stoi(tutor[7]);
        int star = stoi(tutor[15]);
        list[tut] = tutorRecord(tutor[0], tutor[1], jday, jmonth, jyear, tday, tmonth, tyear, tutor[8],
            tutor[9], tutor[10], tutor[11], tutor[12], tutor[13], tutor[14], star);
        cout << list[tut].Name;
        tut++;
    }
    file.close();
}

Внутри текстового файла

202; Ричард ; 24; 3; 2020; 24; 3; 2021; 200; 029181; D2; eXcel Domino 2; Domino; C; Химия; 5 32; Hong; 26; 3; 2020; 26; 3; 2021; 213; 0219321; P2; eXcel Прага 2; Прага; C; Химия; 5

  • Код серьезности Описание Файл проекта Состояние подавления строки Предупреждение C26495 Переменная 'tutorRecord :: DateJ' неинициализирована. Всегда инициализируйте переменную-член (тип.6).
  • Код серьезности Описание Файл проекта Состояние подавления строки Предупреждение C26495 Переменная 'tutorRecord :: DateT' не инициализирована. Всегда инициализируйте переменную-член (type.6).
  • Код серьезности Описание Файл проекта Состояние подавления строки Предупреждение C26495 Переменная 'tutorRecord :: rating' не инициализирована. Всегда инициализируйте переменную-член (type.6).
  • Код серьезности Описание Состояние подавления строки файла проекта C6385 Чтение неверных данных из «списка»: читаемый размер составляет «(unsigned int) * 280 + 4» байта, но «560» байтов может быть прочитано.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...