转换函数中有两个错误,即转换为char不存在。我试图将字符串向量转换为int向量,但这个char业务一直在破坏一切:(。我尝试在错误前面投射(char)
但无济于事。任何帮助/建议都表示赞赏。
另外,根据我的实验室规则,我无法更改asciiToInt函数内的任何内容。而system("pause")
是因为我正在使用微软视觉工作室。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
void input(vector<string> &largeString1, vector<string> &largeString2);
void convert(vector<string> largeString1, vector<string> largeString2, vector<int> &largeInt1, vector<int> &largeInt2);
int asciiToInt(char ch);
void add(vector<int> largeInt1, vector<int> largeInt2, vector<int> &finalInt);
void output(const vector<int> finalInt);
int main()
{
vector<string> largeString1;
vector<string> largeString2;
vector<int> largeInt1(12, 0);
vector<int> largeInt2(12, 0);
vector<int> finalInt(13, 0);
for (int i = 0; i < 4; i++)
{
input(largeString1, largeString2);
convert(largeString1, largeString2, largeInt1, largeInt2);
add(largeInt1, largeInt2, finalInt);
output(finalInt);
}
system("pause");
return 0;
}
void input(vector<string> &largeString1, vector<string> &largeString2)
{
cout << "Input:" << endl << endl;
for (int i = 0; i < 12; i++)
cin >> largeString1[i];
for (int j = 0; j < 12; j++)
cin >> largeString2[j];
}
void convert(vector<string> largeString1, vector<string> largeString2, vector<int> &largeInt1, vector<int> &largeInt2)
{
int size1 = size(largeString1);
int size2 = size(largeString2);
for (int i = 0; i < 12; i++)
{
int dynamicsize1 = size1 - i;
largeInt1[11 - i] = asciiToInt(largeString1[dynamicsize1]);
}
for (int j = 0; j < 12; j++)
{
int dynamicsize2 = size2 - j;
largeInt2[11 - j] = asciiToInt(largeString2[dynamicsize2]);
}
}
int asciiToInt(char ch)
{
return (ch - '0');
}
void add(vector<int> largeInt1, vector<int> largeInt2, vector<int> &finalInt)
{
for (int i = 0; i < 13; i++)
{
finalInt[12 - i] = largeInt1[11 - i] + largeInt2[11 - i];
}
}
void output(const vector<int> finalInt)
{
cout << endl << "Output:" << endl << endl << "The sum is: ";
for (int i = 0; i < 13; i++)
{
cout << finalInt[i];
}
}
答案 0 :(得分:1)
我认为你的目标是阅读由两个字符串表示的两个大数字,然后计算它们的总和。
第一个问题:在这里,您不希望vector<string>
largeStringX
,string
(或vector<char>
)。因为string
是包含字符的容器(即char
),而vector<string>
是包含一些字符串的容器。
第二个问题:要获取字符串的大小(长度),而不是size(someString)
,您应该使用someString.size()
。
答案 1 :(得分:0)
表达式asciiToInt(largeString1[dynamicsize1])
和asciiToInt(largeString2[dynamicsize2])
无效,因为asciiToInt
期望char
且largeString1[dynamicsize1]
和largeString2[dynamicsize2]
的类型均为{{} 1}}。编译器无法将std::string
转换为std::string
。
我无法提出任何修正错误的建议,因为我不清楚你的程序应该做什么。