c++ - 从对向量内的字符串中取出月份
问题描述
我有一对日期和付款的向量,如下所示:
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
所以问题是当我到达 12 月、11 月和 10 月时。有谁知道如何解决这一问题?
解决方案
因为您的某些月份有多个代表它们的数字,所以您需要做的是获取日期字符串的子字符串,其中只有月份部分,然后您可以使用将其转换为整数stoi
。那会让你看起来像
std::vector<int> paymentMonths;
for (auto it : payments)
{
paymentMonths.push_back(std::stoi(it.first.substr(0, it.first.find("/"))));
}
推荐阅读
- ms-word - 在 RMarkdown 中更改 Word 文档样式
- r - R - 将文件路径添加到数据帧的每一行
- java - Java 框架清晰度
- material-ui - Material-ui 组件中字体 Roboto 的不同变体
- python - python中的庞加莱距离
- extjs - ExtJS 6 在现代边缘选择器中使用 TPL
- go - 具有多个等待组的管道中通道范围内的死锁
- c++ - 窗口透明时是否可以接收 WM_TOUCH (WS_EX_TRANSPARENT)?
- angular - 仅使用 prerender.io 客户端预渲染 Angular 7 SPA
- javascript - 使用 javascript 生成随机彩色框