代码(这不是整个代码,只是我想弄清楚的部分):
int x = 12; int y = 14; int z = 6;
char move_from; char move_to;
cout << " Boxes: x y z" << endl;
cout << "Values:" << " " << x << " " << y << " " << z << endl << endl;
cout << "Enter the values you want to move around: ";
cin >> move_from >> move_to;
move_from = move_from - move_from; //Calculations to move the values around
move_to = move_to + move_from;
cout << " Boxes: x y z" << endl;
cout << "Values:" << " " << x << " " << y << " " << z << endl << endl; // Updated values are shown
我想要做的是当用户输入用户想要移动的值时。程序会根据用户输入的内容进行相应操作。例如,如果用户输入xy,则x中的值将添加到y,x中的值将设置为0.
示例输出(我想要它做什么):
Boxes: x y z
Values: 12 14 6
Enter the values you want to move around: xy
Boxes: x y z
Values: 0 26 6
示例输出(它的作用......):
Boxes: x y z
Values: 12 14 6
Enter the values you want to move around: xy
Boxes: x y z
Values: 12 14 6
我遇到的问题是用户输入被保存为字符串,因此计算并不像我想的那样真正起作用,而是我必须编写大约6个不同的if语句来移动值。
我想知道是否有可能只是接受用户输入,并且可以像我上面那样进行计算,并减少我在实际代码中的if语句的混乱。< / p>
谢谢!
答案 0 :(得分:0)
您可以编写一个lambda来将用户输入的c#
转换为对相应变量的引用,例如
char
并使用转换后的引用来执行“移动”,例如
auto char_to_var = [&](char var) -> int&
{
switch (var)
{
case 'x': return x;
case 'y': return y;
default: return z;
}
};