将数月中的字符串放在一对矢量中

问题描述 投票:1回答:1

我有一对矢量日期和付款,如下所示:

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} };

我想从每个第一个元素中取出几个月并将其放入一个int的向量中,即

 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

所以当我到达12月,11月和10月这个月时,问题就出现了。有谁知道如何解决这一问题?

c++ vector std-pair
1个回答
2
投票

因为你的一些月份有多个数字代表它们你需要做的是获取只有月份部分的日期字符串的子字符串,然后你可以使用stoi将其转换为整数。这会让你看起来像厕所

std::vector<int> paymentMonths;
for (auto it : payments)
{
    paymentMonths.push_back(std::stoi(it.first.substr(0, it.first.find("/"))));
}
© www.soinside.com 2019 - 2024. All rights reserved.