Проверка наличия элемента строки в динамическом массиве

82
05 февраля 2022, 08:00

Имеются строки вида

GPGSV,3,1,10,27,13,078,43,05,31,307,48,16,24,042,43,02,10,267,43
GPGSV,3,2,10,26,03,031,36,07,75,215,51,09,57,121,53,30,40,234,50
GPGSV,3,3,10,23,29,117,46,04,36,114,46
GPGSV,3,1,10,27,13,078,43,05,31,307,48,16,24,042,43,02,10,267,43
GPGSV,3,2,10,26,03,031,36,07,75,215,51,09,57,121,53,30,40,234,50
GPGSV,3,3,10,23,29,117,46,04,36,114,46

Есть необходимые значения в строке после определенного количества запятых, нужно проверить, есть ли это значение в массиве, если нет, то вывести это значение и добавить его в массив, если есть, то пропустить. Значения изначально неизвестны, максимум их может быть 100.

int main() {
    int k;
    std::string line;
    std::ifstream logs_("C:/Users/Olya/Desktop/LogGLO.txt"); // Откуда берем данные
    std::ofstream pout("C:/Users/Olya/Desktop/outLOG.txt"); // Куда загружаем
    // Работа с массивом 
    int num = 100;
    int* MASS = new int[num];
    bool ExitFlag;
    if (logs_.is_open()) {
        while (getline(logs_, line)) {
            k = 0;
            if (line.substr(0, 5) == "GPGSV") {
                for (size_t i = 0, N = 4; i < line.size(); i++) {
                    if (line[i] == ',') k++;
                    if (k == N) {
                        for (int j = 0; j < num; f++) {
                            if (MASS[j] != stoi(line.substr(i + 1, 2))) {
                                ExitFlag = false;
                                MASS[j] = stoi(line.substr(i + 1, 2));
                            }
                        }
                        if (ExitFlag == false) {
                            pout << "Satellite name: " << line.substr(i + 1, 2) << std::endl;
                        }
                    }
                }
            }
            logs_.close();
            std::cout << "Success" << std::endl;
        }
    }
    else std::cout << "File is not open" << '\n';
    pout.close();
    return 0;
}

С поиском значений проблем нет, реализовала через подсчет количества запятых, а вот с динамическим массивом не понимаю. Пробовала проверять его на наличие элементов превращая их в тип int через stoi, но компилятор ругается, на строки

if (Memory[f] != stoi(line.substr(i + 1, 2)))

и

pout << "Satellite name: " << line.substr(i + 1, 2) << std::endl;

"Возникло необработанное исключение по адресу 0x7748C41F в ParsingLogs.exe: исключение Microsoft C++: std::invalid_argument по адресу памяти 0x0036F2F4."

READ ALSO
Update varbinary(20) MySQL

Update varbinary(20) MySQL

гуру MySQL, подскажите, как правильно работать с типом данных varbinary(20)? Нужно взять исходное значение, изменить определенный бит и засетать обратноНе...

97
Как делается такое с записью в базе mysql?

Как делается такое с записью в базе mysql?

Хочу реализовать что то такое: Имеем на сайте кнопку и имеем счётчик:

99
обращение к группе пользователей opencart

обращение к группе пользователей opencart

Как обратиться к группе пользователей на opencart через short_name? Версия 23

83