Недавно начала изучать с++, есть задание по обработке текстового файла такого вида:
RE002%%
RE002%%
RE002%%
RE002%%
RE002%%
RE004%on%
$GPGGA,124749.80,5543.3227107,N,03739.1366738,E,1,08,1.11,147.9635,M,14.4298,M,,*5C
$GPGSV,3,1,10,27,13,078,43,05,31,307,48,16,24,042,43,02,10,267,43*7D
$GPGSV,3,2,10,26,03,031,36,07,75,215,51,09,57,121,53,30,40,234,50*76
$GPGSV,3,3,10,23,29,117,46,04,36,114,46*70
$GPGGA,124749.90,5543.3227105,N,03739.1366737,E,1,08,1.11,147.9664,M,14.4298,M,,*54
RE005%off%
Нужно в каждой строке, начинающейся с "$GPGGA" или "$GPGSV", найти восьмибитную XOR-сумму всех символов между «$» и «*» сложить их и сравнить в 16-тиричной системе с последними двумя символами в строке. Для начала я решила выделить нужную часть строки и потом ее обрабатывать, на старом форуме с похожей задачей предложили справиться такими строчками кода:
firstSpace=s.find_first_of(" ");
secondSpace=s.find_first_of(" ",firstSpace+1);
fromSpaceToSpace=s.substr(s,firstSpace,secondSpace-firstSpace);
там человек выделял строку от пробела до пробела, я попробовала адаптировать под свой код, но ничего не работает, возможно будет лучше породить класс для этого, но уровень знаний мне не позволяет сделать это правильно
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
int main() {
string line, dollar, star, Checksum;
float *t0 = NULL;
int tount = 0;
int k;
ifstream logs_("C:/Users/Olya/Desktop/LogGLO.txt");
ofstream tout("outLOGTime.txt");
ofstream pout("outLOGPot.txt");
if (logs_.is_open())
{
while(getline(logs_,line))
{
//line.find("RE004%on%")
k = 0;
if(line.substr(0,6) == "$GPGGA", "$GPGSV")
dollar = line.find_first_of('$');
star = line.find_first_of('*', dollar + 1);
Checksum = line.substr(line, dollar, star - dollar);
for (size_t i = 0; i < Checksumk.size(); i++)
{
}
if (line.substr(0,6) == "$GPGSV")
{
for (size_t i = 0, N = 7; i < line.size(); i++)
{
if (line[i] == ',') k++;
if(k == N)
{
pout << line.substr(i+1,2) << endl;
if ((N += 4) > 19) break;
}
}
}
logs_.close();
}
}
else
cout<<"File is not open"<<'\n';
tout.close();
pout.close();
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я пишу свой небольшй HTTP-сервер на с++В нем мне нужно обрабатывать динамические запросы
у меня проект состоит из 3-х файлов : Header - с прототипами ф-ций Source - с функциями Source1 - с выводом функций на экран Проблема в том, что я хочу написать...