C++;通过BasePairMap映射char输入变量以获得输出整数变量 我是一个Python和SAS开发人员,在C++中有点迷失了。我要做的就是取一个char值,c,定义如下: std::string s1 = argv[1]; for (char c : s1)
…并将其映射到下面的碱基对映射,如下所示:C++;通过BasePairMap映射char输入变量以获得输出整数变量 我是一个Python和SAS开发人员,在C++中有点迷失了。我要做的就是取一个char值,c,定义如下: std::string s1 = argv[1]; for (char c : s1),c++,C++,…并将其映射到下面的碱基对映射,如下所示: typedef std::map<string, int> BasePairMap; BasePairMap m; m["0"] = 48; m["1"] = 49; m["2"] = 50; m["3"] = 51; m["4"] = 52; m["5"] = 53; m["6"] = 54; m["7"] = 55; m["8"] = 56; m["9"] = 57; int in_arg = m[c]; typedef std:
typedef std::map<string, int> BasePairMap;
BasePairMap m;
m["0"] = 48;
m["1"] = 49;
m["2"] = 50;
m["3"] = 51;
m["4"] = 52;
m["5"] = 53;
m["6"] = 54;
m["7"] = 55;
m["8"] = 56;
m["9"] = 57;
int in_arg = m[c];
typedef std::map BasePairMap;
BasePairMap m;
m[“0”]=48;
m[“1”]=49;
m[“2”]=50;
m[“3”]=51;
m[“4”]=52;
m[“5”]=53;
m[“6”]=54;
m[“7”]=55;
m[“8”]=56;
m[“9”]=57;
int in_arg=m[c];
这会产生生成错误:
错误(活动)E0349没有运算符“[]”与这些匹配
操作数SkyQCG:\Visual Studio 2017\C++
Projects\SkyQChannelChanger\SkyQChannelChanger\Main.cpp 144操作数类型为:BasePairMap[char] ……和: 错误C2679二进制“[”:找不到使用右手的运算符 “char”类型的操作数(或没有可接受的 转换)SkyQCG:\visual studio 2017\c++ projects\skyqchannelchanger\skyqchannelchanger\main.cpp 144 我对自己没能弄明白什么似乎是一项相当简单的任务感到非常恼火 本次演习的超高级别目的是:
- 例如,通过变量
为myc
输入字符basepairmap
“4”
- 在_arg中创建一个名为
的整数变量,该变量将被赋值为
52
谢谢
m[c]
。c
不是字符串,因此无法用于查找映射。您可以执行m[std::string(1,c)]
,这有点难看,但会起作用。双引号创建字符数组(“string”
,通常称为字符串),单引号创建字符常量('c'
)你的地图只是一个例子,或者你想把一个数字转换成它的值吗?如果你可以使用<代码> int in ARGG=C′- 0;< /C> >,没有地图。@克里斯姆-我可以生活在丑陋的状态下。你的解决方案起作用了,非常感谢。我今年在议程上C++变得不那么丑陋,更漂亮了,但是它是一个复杂的层次。ty比Python更高,目前我没有要求使用它来支付任何费用,因此它只能以业余爱好的速度进行…@VladFeinstein Hi,Vlad。感谢您的输入。虽然此脚本接收到一系列命令行参数,但需要一个映射,这些参数通过basepairmap映射到c,然后从另一端映射到in_arg。