только начала изучать с++, столкнулась с проблемой вывода символов из строки. Суть в чем: дается файл с данными разделенными запятыми, нужно после определенного к-ва запятых (7, 11, 15, 19) вывести две цифры в другой файл. Я написала часть кода, которая прогоняет строку и считает к-во запятых, но как после выполнения условия нахождения нужного к-ва сразу вывести две цифры ума не приложу. Пробовала через .substr, но это очевидно неправильное решение..
P.S наверное еще неэффективно ищу нужное к-во запятых, наверняка есть элегантное решение увеличения параметра после 7 на 4 и до 19.
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
int main() {
string line;
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 (!logs_.eof())
{
k = 0;
logs_ >> line;
/*if(line.substr(0,6) == "$GPGGA")
{
if (t0)
{
tout << atof(line.substr(7,10).c_str()) - *t0 << endl;
}
else
{
t0 = new float;
*t0 = atof(line.substr(7,10).c_str());
}
tount++;
}*/
/*else*/ if (line.substr(0,6) == "$GPGSV")
{
for (size_t i = 0; i < line.size(); i++)
if (line.at(i) == ',') k++;
if(k == 7)
{
pout << atof(line.substr(0,2).c_str()) << endl;
}
for (size_t i = 0; i < line.size(); i++)
if (line.at(i) == ',') k++;
if(k == 11)
{
pout << atof(line.substr(0,2).c_str()) << endl;
}
for (size_t i = 0; i < line.size(); i++)
if (line.at(i) == ',') k++;
if(k == 15)
{
pout << atof(line.substr(0,2).c_str()) << endl;
}
for (size_t i = 0; i < line.size(); i++)
if (line.at(i) == ',') k++;
if(k == 19)
{
pout << atof(line.substr(0,2).c_str()) << endl;
}
}
logs_.close();
tout << "K-vo Zna4eniy -- " << tount << endl;
}
}
else
cout<<"File is not open"<<'\n';
tout.close();
pout.close();
return 0;
}
while (!logs_.eof())- неправильная. – Harry Dec 13 '19 at 20:23А почему проверка неправильная?
– Olya Dec 13 '19 at 20:31eof– Harry Dec 13 '19 at 20:33По идее она должна выводить в файл значения 41 49 44 44, но она ничего не выводит, основной вопрос состоит в: "Как переделать эту строчку, чтобы он выводил два символа когда выполняется условие"
– Olya Dec 13 '19 at 20:59i+1... К вечеру торможу. Посмотрите теперь. Кстати,k=0я тоже в цикл внес, как внешняя переменная она не нужна. – Harry Dec 13 '19 at 21:02