C ++:如何将字符串对象复制到int数组?

时间:2012-01-20 16:10:10

标签: c++ linux arrays string

我在C ++中有一串数字:比如string str =“1234567012”

  1. 我希望将它复制到一个int数组,这样数组的每个元素都有一个数字。现在我可以使用迭代器,一次迭代一次并使用static_cast<int>(*iter)。但是,还有更简单直接的方法吗?

  2. 最后我想将int数组重新复制到字符串数组。

  3. 请帮我完成上述两个步骤。

2 个答案:

答案 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'; }