我在C ++中有一串数字:like string str =“1234567012”
我希望将其复制到一个int数组中,使数组中的每个元素都有一个数字。 现在我可以使用一个迭代器,每次迭代一个,并使用static_cast<int>(*iter)
。 但是有没有更简单直接的方法?
最后我想recopy int数组到string数组。
请帮助我以上两个步骤。
你可以使用std::transform
函数:
std::vector<int> ints(str.size()); std::transform(str.begin(), str.end(), ints.begin(), [](char c) { return c - '0'; });
如果你的编译器还不支持lambdas,你可以使用一个常规函数:
int get_digit(char c) { return c - '0'; } // ... std::transform(str.begin(), str.end(), ints.begin(), get_digit);
要做相反的操作,你可以做同样的事情:
std::string s(ints.size(), 0); std::transform(ints.begin(), ints.end(), s.begin(), [](int i) { return i + '0'; });
像这样的东西:
std::vector<int> v; v.reserve(str.size()); for (char c : str) { v.push_back(c - '0'); } //... string s; for (int i : v) { s += i + '0'; }