Думаю, у меня есть целочисленный массив вроде этого: a[0]=60; a[1]=321; a[2]=5;
Теперь я хочу преобразовать весь этот массив в целое число, например int b
станет 603215 после запуска кода. Как это сделать?Преобразование целочисленного массива в число
ответ
Используйте std::stringstream
:
#include <iostream>
#include <sstream>
int main() {
std::stringstream ss;
int arr[] = {60, 321, 5};
for (unsigned i = 0; i < sizeof arr/sizeof arr [0]; ++i)
ss << arr [i];
int result;
ss >> result;
std::cout << result; //603215
}
Обратите внимание, что в C++ 11, которые мягко некрасиво цикл может быть заменен следующим образом:
for (int i : arr)
ss << i;
Кроме того, видя, как есть хорошая возможность переполнение, можно получить доступ к строковой форме номера с помощью ss.str()
. Чтобы обойти переполнение, было бы легче работать с этим, чем пытаться втиснуть его в целое. Следует учитывать и отрицательные значения, поскольку это будет работать (и имеет смысл) только в том случае, если первое значение отрицательное.
Большое спасибо, Хороший ответ :)) – Nofuzy
Спасибо большое, что он работает ....... –
Concat все числа в виде строки и затем преобразовать, что номер
#include <string>
int b = std::stoi("603215");
Я знаю, что вопрос не слишком конкретный, но я бы предположил, что элементы массива могут быть произвольными (до точки, где он не переполняет целое число). Hardcoding строковое значение не обойдется. Тем не менее, функция является хорошим альтернативным стартом (при условии, что у вас есть C++ 11). – chris
Этот алгоритм будет работать:
- конвертировать все целые значения массива в строку, используя для цикла.
- Теперь добавьте все значения строк в одну строку из индекса 0 в длину массива.
- Измените эту строку на целое число.
Я сделал ваш алгоритм легче следовать при чтении. FFR, в верхней части пространства редактирования есть кнопка с пронумерованным списком. – chris
int a[] = {60, 321, 5};
int finalNumber = 0;
for (int i = 0; i < a.length; i++) {
int num = a[i];
if (num != 0) {
while (num > 0) {
finalNumber *= 10;
num /= 10;
}
finalNumber += a[i];
} else {
finalNumber *= 10;
}
}
finalNumber имеет результат:
Спасибо, Крис. Я отредактировал его. –
Просто пара других вещей, первая из которых является Java-> C++: 1. Массивы не являются классами на C++ и не имеют члена 'length'. Обычно лучше использовать 'std :: vector', поскольку он предлагает функциональность. 2. 'a' должен быть' arr'. – chris
@Kalai Спасибо тоже, Ницца и умный Ответ :)) – Nofuzy
Перебор массива и преобразовать значения в строку. Затем объедините все их и преобразуйте обратно в целое.
#include <string>
int a[] = {60, 321, 5};
std::string num = "";
for(auto val : a)
num += a;
int b = std::stoi(num);
- 1. Преобразование целочисленного целочисленного массива в массив char
- 2. Преобразование целочисленного массива OpenCv
- 3. Преобразование целочисленного массива в строку
- 4. Преобразование целочисленного указателя в целое число
- 5. Преобразование целочисленного массива в строковый массив
- 6. Преобразование целочисленного массива в байтовый массив
- 7. Целочисленного переполнения в отрицательное число
- 8. Преобразование целочисленного числа в шестнадцатеричное число в delphi 7
- 9. Преобразование целочисленного числа в двоичное число с использованием рекурсии
- 10. Quicksorting практика целочисленного массива
- 11. Преобразование целочисленного массива в PNG-изображение в Python
- 12. Преобразование целочисленного массива в двоичный массив в python
- 13. Преобразование массива в число в (Mikro) C
- 14. Преобразование целочисленного в двоичный в C#
- 15. Запись целочисленного массива в файл
- 16. Преобразование целочисленного числа в формат времени
- 17. Преобразование строки в число для использования массива?
- 18. Преобразование числовой строки в число ключей массива
- 19. Преобразование байтового массива в целое число
- 20. Преобразование массива Int в целое число (Swift)
- 21. Преобразование массива unsigned char в целое число
- 22. JavaScript - преобразование четырехсимвольного массива в целое число
- 23. Преобразование массива в целое число без знака
- 24. Преобразование массива байтов в целое число
- 25. Преобразование нескольких значений массива в целое число
- 26. Преобразование целочисленного в байтовый массив
- 27. Преобразование целочисленного Arraylist в строку
- 28. Преобразование целочисленного в шестнадцатеричный String
- 29. Преобразование целочисленного значения в datetime в sqldf
- 30. Инициализация целочисленного массива как члена
Должен сказать, что я никогда не думал об этом, или видел, что кто-то еще пытается это сделать. Престижность за оригинальность, или выбор вопроса, который скрыт от меня. – chris
Это похоже, но проще, чем [этот вопрос] (http://stackoverflow.com/questions/11187898/how-to-concatinate-3-ints-into-unsigned-long-long/). Мое решение относится к этой проблеме, но поскольку вы не заботитесь о форматировании, решение 'stringstream' кажется более простым. – juanchopanza