c++ - 将 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 风格的类型转换 ( 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';
推荐阅读
- java - om2m 问题...无法启动 om2m 平台
- javascript - Javascript 术语 - 工作表是对象吗?
- azure-functions - Azure Terraform 网络安全组被删除
- javascript - 如何在我的 Vue.js 项目中以横向模式打印 html 页面
- javascript - 等待/异步如何处理未解决的承诺
- java - 包 org.codehaus.jettison.json 不存在
- assembly - 使用相对路径在 Visual Studio 中包含 MASM 的库
- java-8 - Wildfly 16:在 Java8 中更改 XX:MaxMetaspaceSize 有什么好处?
- typescript - 使用 getWordUnderCursor 获取包含撇号的单词?
- apache-kafka - kafka producer 中两种不同类型的分区