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

如何将输入的字符串设置为变量?C++,c++,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 << end

代码这不是全部代码,只是我想了解的部分:

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
示例输出它的作用…:

 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语句的混乱


谢谢大家!

您可以编写lambda来将用户输入的字符转换为对相应变量的引用,如

auto char_to_var = [&](char var) -> int&
                   {
                       switch (var)
                       {
                       case 'x': return x;
                       case 'y': return y;
                       default:  return z;
                       }
                   };
auto &move_from_var = char_to_var(move_from);
auto &move_to_var = char_to_var(move_to);
move_to_var += move_from_var;
move_from_var = 0; 
并使用转换后的引用执行移动,例如

auto char_to_var = [&](char var) -> int&
                   {
                       switch (var)
                       {
                       case 'x': return x;
                       case 'y': return y;
                       default:  return z;
                       }
                   };
auto &move_from_var = char_to_var(move_from);
auto &move_to_var = char_to_var(move_to);
move_to_var += move_from_var;
move_from_var = 0; 

您的描述不够清晰,我无法理解您的意图。变量是编译时的概念,在程序执行期间没有特殊意义。您必须编写一些逻辑来处理不同的输入。是否从-move_-from将值设置为0?我用示例输出更新了我的问题,其中包括我希望代码执行的操作以及它实际执行的操作。这基本上就是我运行代码时得到的。你不能。您可以将变量和值存储在映射中,然后通过索引进行访问。