C++高精度加法字符串实现
时间: 2024-10-03 14:01:58 浏览: 33
在C++中实现高精度加法的字符串操作通常涉及到手动处理每一位数以及进位的过程,因为标准库并没有直接提供这样的功能。以下是一个简单的示例,演示如何使用字符数组和指针来实现两个大整数的加法:
```cpp
#include <iostream>
#include <string>
// 将两个数字相加并返回结果的长度
int addStrings(const std::string &a, const std::string &b) {
int carry = 0;
int lenA = a.size(), lenB = b.size();
std::string result(lenA + lenB, '0'); // 初始化足够大的结果字符串
// 从低位到高位逐位相加
for (int i = lenA - 1; i >= 0; --i) {
int sum = a[i] - '0' + b[i] - '0' + carry; // 相当于 a[i]*10 + b[i]*10 + carry
result[lenA - 1 - i] = sum % 10 + '0'; // 取余数并转换回字符
carry = sum / 10; // 计算进位
}
// 如果最高位有进位,则追加一位0
if (carry > 0)
result[0] = carry + '0';
return result.length();
}
// 主函数示例
int main() {
std::string str1 = "12345";
std::string str2 = "67890";
std::cout << "Sum is: " << addStrings(str1, str2) << std::endl;
return 0;
}
```
阅读全文