gpt4 book ai didi

c++ - 如何更改输入字符串中提到的变量?

转载 作者:行者123 更新时间:2023-11-30 03:42:53 26 4
gpt4 key购买 nike

我有一个学生的学校项目,我主要用 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 中指向一个变量来改变吗?

最佳答案

如果我理解正确,那么您需要一个 map container 而不是像现在这样保留变量 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"],但这里要小心,如果 map 中不存在“A”,它将被创建并且值已初始化(调用默认构造函数 - 因此它将为空字符串)。要检查 key 是否存在,请使用 if (varMap.find("A") == varMap.end()) {/*no such variable*/>

另一件事是你 istringstream 的用法是错误的你应该在使用它之前检查是否读取了一些东西,正确的习惯用法是:

istringstream iss(s);
string sub;
while(iss >> sub)
{
krok[i] = sub;
i++;
}

[编辑]

您可能想到的是可以像 variable variables concept 这样使用 php ,或者来自 java 和其他语言的反射。在 c++ 中没有这样的东西,推荐的方法——在 php 中也是如此,是使用关联容器,如 map。

关于c++ - 如何更改输入字符串中提到的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36544895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com