Извлечение месяцев из строки, которая находится внутри вектора пар - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть пара вектор дат и платежей, которая выглядит следующим образом:

std::vector<std::pair<std::string, double>> payments = { {"8/18", 0.0}, {"7/18", 771.98}, {"6/18", 0.0}, {"5/18", 771.98},
                                                    {"4/18", 771.98}, {"3/18", 771.98}, {"2/18", 0.0}, {"1/18", 3859.90},
                                                    {"12/17", 771.98}, {"11/17", 0.0}, {"10/17", 1543.96}, {"9/17", 771.98} };

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

 payment_months = [8,7,6,5,4,3,2,1,12,11,10,9]

Я пытался сделать это:

std::vector<int> paymentMonths;
for (auto it : payments)
{
    paymentMonths.push_back(it.first[0] - '0');
}

Это дает мне

8 7 6 5 4 3 2 1 1 1 1 9

Итак, проблема в том, что я попадаю на декабрь, ноябрь и октябрь.Кто-нибудь знает как это исправить?

1 Ответ

0 голосов
/ 19 ноября 2018

Поскольку некоторые из ваших месяцев имеют более одной цифры, представляющей их, вам нужно получить подстроку строки даты, в которой есть только часть месяца, а затем преобразовать ее в целое число, используя stoi.Это сделало бы тебя похожим на

std::vector<int> paymentMonths;
for (auto it : payments)
{
    paymentMonths.push_back(std::stoi(it.first.substr(0, it.first.find("/"))));
}
...