[英]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 AB的操作,並且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"]
,但請注意,如果map中不存在“ A”,則會對其進行初始化並初始化值(調用默認構造函數-這樣它是空字符串)。 要檢查密鑰是否存在,請使用if (varMap.find("A") == varMap.end()) {/*no such variable*/}
另一件事是您istringstream用法是錯誤的,應在使用前檢查是否已閱讀某些內容,正確的習慣用法是:
istringstream iss(s);
string sub;
while(iss >> sub)
{
krok[i] = sub;
i++;
}
[編輯]
您可能想到的是可以使用php之類的變量變量概念 ,或者從Java和其他語言中反射出來。 在c ++中沒有這樣的東西,並且推薦的方式-就像在php中一樣,是使用像map這樣的關聯容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.