C ++: Как скопировать строковый объект в массив int? - PullRequest
1 голос
/ 20 января 2012

У меня есть строка чисел в C ++: например, строка str = "1234567012"

  1. Я хочу скопировать это в массив int, так что каждый элемент массива будет иметьодна цифраТеперь я могу использовать итератор, итерацию по одному и использовать static_cast<int>(*iter).Но есть ли более простой и простой метод?

  2. наконец, я хочу скопировать массив int в массив строк.

Пожалуйста, помогите мнес вышеупомянутыми 2 шагами.

Ответы [ 2 ]

8 голосов
/ 20 января 2012

Вы можете использовать функцию std::transform:

std::vector<int> ints(str.size());
std::transform(str.begin(), str.end(), ints.begin(),
               [](char c) { return c - '0'; });

Если ваш компилятор еще не поддерживает лямбды, вы можете использовать обычную функцию:

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'; });
3 голосов
/ 20 января 2012

Примерно так:

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'; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...