我在C ++中有一串数字:比如string str =“1234567012”
我希望将它复制到一个int数组,这样数组的每个元素都有一个数字。现在我可以使用迭代器,一次迭代一次并使用static_cast<int>(*iter)
。但是,还有更简单直接的方法吗?
最后我想将int数组重新复制到字符串数组。
请帮我完成上述两个步骤。
答案 0 :(得分:8)
您可以使用std::transform
功能:
std::vector<int> ints(str.size());
std::transform(str.begin(), str.end(), ints.begin(),
[](char c) { return c - '0'; });
如果你的编译器还不支持lambda,你可以使用常规函数:
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'; });
答案 1 :(得分:3)
这样的事情:
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'; }