【发布时间】:2021-07-31 19:04:21
【问题描述】:
将这些分成 3 个整数的最快方法是什么?我觉得这应该是可能的,但我能找到的最接近的是:
#include <ostream>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
std::vector<int> extract_ints(std::string const& input_str)
{
std::vector<int> ints;
std::istringstream input(input_str);
std::string number;
while (std::getline(input, number, ':'))
{
std::istringstream iss(number);
int i;
iss >> i;
ints.push_back(i);
}
return ints;
}
int main()
{
typedef std::vector<int> ints_t;
ints_t const& ints = extract_ints("3254:23-45");
for (ints_t::const_iterator i = ints.begin(), i_end = ints.end(); i != i_end; ++i)
std::cout << *i << std::endl;
return 0;
}
实际操作的链接在这里:https://godbolt.org/z/8sP9vvqfv 但首先它只会在 ':' 之间分开,不知道如何扩展为 ':' 和 '-'。但其次,这似乎过于复杂......这真的是最好的方法吗?
谢谢
【问题讨论】:
-
扩展:
int a, b, c; char colon, dash; if (iss >> a >> colon >> b >> dash >> c && colon == ':' && dash == '-') return {a, b, c}; else return {}; -
寻求“最佳方式”是在征求意见,这对于 stackoverflow 来说是题外话。您能否改为根据事实和技术术语重新构建您的问题?
标签: c++ string type-conversion integer data-conversion