Разделение данных в istringstream - PullRequest
0 голосов
/ 05 октября 2019

Я проанализировал строку в переменных, используя std::istringstream.

Вот код:

Reservation rec;
Reservation::Reservation(): resID(""), resName(""), email(""), people(""), day(""), hour("")
{
}

Reservation::Reservation(const std::string & m_res): stringfile(m_res)
{
    std::replace(stringfile.begin(), stringfile.end(), ',', ' ');

    std::istringstream strm(stringfile);
    strm >> rec.resID >> rec.resName >> rec.email >> rec.people >> rec.day >> rec.hour;
}

Теперь мой желаемый вывод для объекта должен выглядеть следующим образом (просто фрагмент из большего вывода):

Reservation RES-001:       John  <john@email.com>        Drinks on day 3 @ 5:00 for 2 people.
Reservation RES-002:      David  <david@email.com>       Breakfast on day 4 @ 6:00 for 1 people.

По сути, все, что бросается в глаза, заключается в том, что моя friend функция, которая печатает данные, вызывается как цикл. Мои std::istringstream данные - это одна информация после следующей, цикличность не требуется.

Вот вывод, который я получаю:

Reservation RES-020:: Donna<donna@email.com>breakfast on DAY 4 @ HOUR:24 for 3people
Reservation RES-020:: 20Donna<0donna@email.com>lunch on DAY 4 @ HOUR:24 for 3people

Теперь я НЕ МОГУ изменить вызов на функцию друга. Вот оно:

for (auto i = 0u; i < cnt; ++i)
{
    std::cout << *ppReservations[i];
}

И вот мой код, который выводит отформатированную информацию, повторяющую одну и ту же строку ( это фрагмент кода, остальная часть функции следует тем же параметрам, что ис разными часами сравнения ):

if (std::stoi(rec.hour) >= '6' || std::stoi(rec.hour) <= '9')
{
    os << "Reservation " << rec.resID + ": " << rec.resName
       << "<" << rec.email + ">" << "breakfast on DAY " << rec.day
       << " @ HOUR:" << rec.hour << " for " << rec.people << "people\n";
}

Итак, вопрос в том, как я могу получить желаемый результат? Есть ли способ изменить мои std::istringstream переменные так, чтобы они могли соответствовать циклу for, который вызывает функцию friend, чтобы вывод не совпадал с повторением строки снова и снова?

...