假设我有一个整数数组:
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()
访问该数字的字符串形式。为了避免溢出,使用字符串会比试图将其塞入整数中更容易。也应考虑负值,因为只有在第一个值为负时此方法才有效(并且有意义)。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已经得出结果:603215
length
成员。通常最好使用 std::vector
代替,因为它提供了相应的功能。2. a
应该改成 arr
。 - chris#include <string>
int b = std::stoi("603215");
这个算法可以实现:
迭代数组并将其值转换为字符串。然后将它们全部连接起来并转换回整数。
#include <string>
int a[] = {60, 321, 5};
std::string num = "";
for(auto val : a)
num += a;
int b = std::stoi(num);
数字应以相反的方式存储
for(int i=0;i<d;i++)
{
ans += num[i]*pow(10,i);
}
stringstream
的解决方案似乎更简单。 - juanchopanza