我的代码出了点问题,我想将一个数字字符串与一个数字数组(相同长度)相乘,然后将乘积存储在变量product中,然后将每个列的乘积存储在我的字符串变量中(如一个新值)
string var1 = "1232253759";
int arr[] = {5,3,7,1,2,8,9,2,2,1};
for(int i = 0; i < var1.size(); i++)
{
for(int n = 0; n < 10; n++)
{
int product = 0;
product = var1[i] * arr[n];
var1[i] = product;
}
}
此结果的简短输出:
245
-33
-231
25
50
400
-1008
32
答案 0 :(得分:1)
因此,如果我没有记错,这就是您想要的权利。 其中totalProduct将保存每个产品的产品,而arr2将保存您的列。我添加了resultAsString,所以结果为字符串
请注意var.at(i)-'0'
,它可以完成您想要的转换,或者我认为您正在寻找。
使用
从int转换为字符串imstd::stringstream ss;
ss << product;
atoi(product)函数将是较少的C ++方法。或者如果使用c ++ 11 std:to_string(product) 希望对您有帮助
#include <iostream>
#include <string>
#include <sstream>
int main() {
std::string var1 = "1232253759";
int arr[] = {5,3,7,1,2,8,9,2,2,1};
int arr2[var1.size()];
int totalProduct = 0;
std::string resultAsString = "";
for(int i = 0; i < var1.size(); i++)
{
// for(int n = 0; n < 10; n++)
// {
int product = (var1.at(i)-'0') * arr[i];
// std::cout << product << "\n";
arr2[i] = product;
std::stringstream ss;
ss << product;
resultAsString += ss.str();
totalProduct += product;
//}
}
// for (int i = var1.size() - 1; i >= 0; i--)
// std::cout << arr2[i] << " ";
std::cout << resultAsString;
}
答案 1 :(得分:0)
var1[i]
是char
,而不是int
。 char
隐式转换为int
,计算出错。您需要将char
用数字映射到数字本身(“ 1”-> 1,“ 2”-> 2)。为此,减去值“ 0”。即var1[i] - '0'
是char的数字