首页 > 解决方案 > 将 char 类型转换为 int 以用作向量 C++ 的索引

问题描述

在我的程序中,我有一串都是数字的字符,我想用它们作为索引来从向量中获取值。但是这段代码的输出是一个 15 位的数字,所以不是1,它是vect[0]即我认为它会输出的。

char c = '0';
vector<int> vect = {1};
int i = (int)c;
cout<<vect[i];

我已经看到从字符转换为整数是通过

int i=(int)c;

所以我真的不明白这不是一个适合索引的类型。

标签: c++type-conversion

解决方案


首先,使用 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';

推荐阅读