Как собрать все элементы в один? - PullRequest
0 голосов
/ 17 октября 2019

Мой код разбирает целое число на части и записывает их в массив, но теперь я хочу собрать массив обратно в целое число.

Я изменю данные внутри массива, поэтому мне нужно собрать всеназад после изменений.

int a = 123456789;
std::string stringInt = std::to_string(a);

std::vector<int> numbers;
numbers.reserve(stringInt.length());

for (const auto& chr : stringInt)
{
    // ...

    numbers.push_back(chr - '0');
    cout << chr << "\n" << endl;
}

1 Ответ

2 голосов
/ 17 октября 2019

Вы можете сложить целые числа, умножая результат на 10 каждый раз:

int b = 0;
for (const auto& chr : stringInt)
{
    numbers.push_back(chr - '0');
    b *= 10;
    b += chr - '0';
}
std::cout << b << std::endl;

В качестве альтернативы вы можете поместить символы в строку вместо того, чтобы превращать их в int и помещать их ввектор, а затем используйте std::stoi, чтобы получить int обратно из строки:

std::string numbers;
for (const auto& chr : stringInt)
{
    numbers.push_back(chr);
    cout << chr << "\n" << endl;
}
int b = std::stoi(numbers);
std::cout << b << std::endl;
...