如何将输入的字符串设置为变量? C ++

时间:2018-01-21 22:06:22

标签: c++

代码(这不是整个代码,只是我想弄清楚的部分):

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>

谢谢!

1 个答案:

答案 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;
                       }
                   };