如何更改输入字符串中提到的变量
How to change variable mentioned in input string?
我有一个学生项目要上学,我主要用PHP编程,所以C++不是我的强项:)请告诉我,有可能更改我在cin字符串中提到的变量吗?也许我下面的代码会更容易理解:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
string A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, R, Q, S, T, U, V, W, X, Y, Z;
string instrukcja;
string krok[3];
int i = 0;
string MAKENULL()
{
return " ";
}
void WRITE(string x)
{
cout << x;
}
int main()
{
// get instruction Begin
char s[10];
scanf("%10[0-9a-zA-Z ]", s);
istringstream iss(s);
while(iss)
{
string sub;
iss >> sub;
krok[i] = sub;
i++;
}
// get instruction End
if (krok[0] == "MAKENULL")
{
"" Variable in krok[1] "" = MAKENULL();
}
if (krok[0] == "WRITE")
{
WRITE("" Variable in krok[1] "");
}
if (krok[0] == "OPPOSITE")
{
OPPOSITE("" Variable in krok[1] "", "" Variable in krok[2] "")
}
}
在上面的代码中,我会做一些类似于ADD A B的操作,A应该变成A=>A+B(一个字符串粘在另一个字符串上)。主要问题是,我可以在scanf中指向一个变量进行更改吗?
如果我理解正确,那么就不用把变量保持为现在的A、B、C,。。。你需要一个地图容器:
#include <map>
// ...
std::map<std::string, std::string> varMap;
其中key是变量名:A、B、C,value是其值。
然后您可以使用当前的读取方式,当您为变量A赋值时,您可以使用:
varMap["A"] = newValue;
当你阅读它时,你也使用std::string value = varMap["A"]
,但这里要小心,如果映射中不存在"A",它将被创建并初始化值(默认构造函数被调用,因此它将是空字符串)。要检查密钥是否存在,请使用if (varMap.find("A") == varMap.end()) {/*no such variable*/}
另一件事是,如果你发布流的使用是错误的,你应该在使用它之前检查一下是否读过什么,正确的习惯用法是:
istringstream iss(s);
string sub;
while(iss >> sub)
{
krok[i] = sub;
i++;
}
[编辑]
您可能想到的是使用类似php的变量概念的可能性,或者来自java和其他语言的反射。在c++中没有这样的东西,建议使用类似map的关联容器,就像在php中一样。
相关文章:
- 我试图了解在异或操作后指针变量正在更改
- OpenMP 任务看不到共享变量的更改
- C++ std::valarray 成员变量意外更改
- 如何修复初始化后'stack around variable was corrupted.'变量未更改为分配的值
- 未定义的行为错误:对成员变量的更改仅在某些上下文中可见
- 当我的结构中的任何变量发生更改时触发的事件的任何方法
- 为什么字段中的第二个变量没有更改
- C - 类私人变量不更改
- 为什么我的布尔变量会更改(C )
- 常量 & 指非易失性变量。变量将更改。更改是否使常量 & 无效?
- 无法通过引用函数"calcValues"中"firstNum"和"secondNum"变量来更改值
- program_options变量映射更改参数
- 如何在C++中的线程之间传递对静态成员变量的更改
- 使用 alternative 变量声明更改 for 循环的范围:
- 变量意外更改值
- 对 std::atomic 变量的更改(读/写)如何在线程之间传播
- 为什么成员变量会更改,但在这种情况下对象的地址保持不变?
- 自动文件重命名-const变量正在更改其值
- 缓冲区溢出-变量的更改
- 尝试反映对原始变量的更改(通过引用调用)的效果