在我的程序中,我有一串都是数字的字符,我想将它们用作从向量中获取值的索引。但是此代码的输出是15位数字,因此不是 1 ,而是 vect [0] ,即我认为它将输出的数字。
char c = '0';
vector<int> vect = {1};
int i = (int)c;
cout<<vect[i];
我已经看到将字符从整数转换为
int i=(int)c;
所以我真的不明白那不是索引的合适类型。
答案 0 :(得分:1)
首先,使用C样式强制转换(int i = (int) c;
)而不是使用静态强制转换(int i = static_cast<int>(c);
)是不好的做法。但是确实,正如其他人提到的那样,char
会自动提升为int
。
然后字符'0'与索引0不同。看看:
int i = c;
std::cout << i << std:endl;
如果要将字符“ 0”用作索引0,请使用:
int i = c - '0';