C++ C++;字符向量加法
这是我正在编写的程序的一部分,用于计算两个整数作为字符串的相加。(编写我自己的bigInt类) 当我将两个整数相加时,似乎出现了问题。因为它们都在C++ C++;字符向量加法,c++,vector,C++,Vector,这是我正在编写的程序的一部分,用于计算两个整数作为字符串的相加。(编写我自己的bigInt类) 当我将两个整数相加时,似乎出现了问题。因为它们都在char类型的向量中,所以我必须在向量的每个元素中添加一个'0',然后再将其连接到字符串中 然而,结果仍然不是我所期望的: #包括 #包括 #包括 使用名称空间std; int main() { 字符串常量Number=“1000”; 字符串常量Number2=“1000”; 矢量反转; 载体逆转2; //请不要格式化你的代码哦,我的错。对不起。@W
char
类型的向量中,所以我必须在向量的每个元素中添加一个'0'
,然后再将其连接到字符串中
然而,结果仍然不是我所期望的:
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串常量Number=“1000”;
字符串常量Number2=“1000”;
矢量反转;
载体逆转2;
//请不要格式化你的代码哦,我的错。对不起。@WhozCraig,谢谢你编辑我的问题。每次你发布一个文本终端的图像,上帝就会杀死一只小猫。而且,字符并不等于它们所代表的数字。'1'+'2'!='3'
。你需要弄清楚如何从'1'
转换到1
,然后再转换回来。()
参见Cppreferences@n.m.我意识到了我的错误。我把我想要的ASCII值,而不是整数值推到向量reverse
。因此,我需要减去'0'
,得到我需要的整数值进行加法。然后再将其转换回ASCII等效值。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
string const Number = "1000";
string const Number2 = "1000";
vector<char> reverse;
vector<char> reverse2;
//cout << (rostrNumber[1] - '0') << endl;
cout << "Original Number: " << Number << endl;
reverse.clear();
for (int i = Number.size() - 1; i >= 0; i--)
{
reverse.push_back(Number[i]);
}
cout << "Reversed: " << endl;
cout << reverse[0] << reverse[1] << reverse[2] << reverse[3] << endl;
cout << endl << endl;
reverse2.clear();
{
for (int i = Number2.size() - 1; i >= 0; i--)
{
reverse2.push_back(Number[i]);
}
}
cout << "Adding these two integers" << endl;
vector<char> const rcvN1 = reverse;
vector<char> const rcvN2 = reverse2;
vector<char> Results;
Results.clear();
//Local copies
vector<char> vN1 = rcvN1;
vector<char> vN2 = rcvN2;
int iSize1 = vN1.size();
int iSize2 = vN2.size();
int i, iSize = iSize2;
int iC = 0, iR;
for (i = 0; i<iSize; i++)
{
iR = vN1[i] + vN2[i] + iC;
if (iR > 9)
{
iR -= 10;
iC = 1;
}
else
iC = 0;
Results.push_back(iR);
cout << Results[0] << endl;
}
if (iC > 0)
Results.push_back(iC);
string ostr;
vector<char>::const_reverse_iterator rIter = Results.rbegin();
for (; rIter != Results.rend(); rIter++)
ostr += *rIter +'0';
cout << "Results: " << ostr << endl;
system("PAUSE");
return 0;
}