C++将字符串转换/强制转换为整数值(ASCII)
C++ Converting/casting String letters to integer values (ASCII)
我目前正在做一个项目,需要创建两个用于包含字符串的数据结构。其中一个必须是链表的形式,我已经习惯于将单词分成字母表中每个字母的单独列表。我需要考虑效率,所以我有一个26大小的Head指针数组,我想把单词的第一个字符转换成整数,这样我就可以把它放进下标中,比如:
//a string called s is passed as a parameter to the function
int i = /*some magic happens here*/ s.substr(0, 1);
currentPointer = heads[i]; //then I start iterating through the list
我一直在四处搜索,我所找到的只是如何将字符串中的数字字符转换为整数,而不是字母字符,我想知道我到底如何在不使用一组庞大而丑陋的if语句
将i设置为第一个字符的值时,将获得ASCII值。所以我超出了你的0-25范围:见man ascii您可以通过减去第一个阿拉伯字母来减少它。(小心处理案件(
std::string s("zoro");
int i = s[0];
std::cout << "Ascii value : " << i << " Reduced : " << i - 'a' << std::endl;
它产生ASCII值'z'=112和25作为减少的值,正如预期的那样。
我认为您混淆了值和表示。"十"10"answers"11 11 11 11 1 1 1 1"都是相同的值,只是表示方式不同。
我一直在四处搜索,我所找到的只是如何将字符串中的数字字符转换为整数,而不是字母字符
没有区别。无论如何,字符总是用整数表示。这只是一个代表性的问题。只要以你想要的方式呈现价值。
顺便说一句,这是程序员必须理解的一个关键概念。因此,花点时间思考一下是值得的。
这种误解的一个经典例子是这样一个问题:"我有一个变量i
,它有一些十进制值。我如何使它以十六进制存储值?"当然,这没有意义,它存储值,十六进制和十进制是表示。如果你有十辆车,你就有十辆车,而不是十进制或十六进制。如果i
的值为10,则值10在i
中,而不是以十进制或十六进制表示的10。
当然,当显示存储在i
中的值时,您必须选择如何表示。您可以将其显示为ten
、10
、| | | | | | | | | | |
或其他形式。
您可能有一个字符串,它具有值的表示形式(十六进制("ten",您可能需要将的值赋值给一个变量。这需要从表示转换为它所表示的值。
输入和输出函数在各种表示中输入和输出值。
我怀疑您想将字符串中以字符形式存储的数字转换为整数,例如字符'9'
转换为整数9
。
为了做到这一点:
char c = '9';
int x = c - '0';
无论你的计算机是使用ASCII还是EBCDIC,这都会起作用。。。
在这种情况下,您似乎不需要atoi
或itoa
(例如,J
都不会做任何非常有用的事情(。你只想要这样的东西:
int i = tolower(s[0])-'a';
从理论上讲,这是不可移植的——如果代码有可能在使用EBCDIC的机器(即IBM或兼容的大型机(上使用,您会希望使用类似'z'-'a'
的东西作为数组的大小,因为它不会正好是26(EBCDIC包括插入在一些字母之间的一些其他字符,因此字母是有序的,但不是连续的(。
也许更重要的是,如果你想支持英语以外的语言,事情会很快发生变化——你可能有26个不同的字母,它们可能不都是连续的,等等。在这种情况下,你的基本设计才是真正的问题。与其修复那一行代码,您可能需要几乎完全重新设计。
然而,顺便说一句,链表很有可能不是一个很好的选择。
- 努力将整数转换为链表。不知道我在这里做错了什么
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 如何在C++中将整数转换为其数字数组
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 如何将整数字符串转换为整数的二维向量?
- 如果整数与指针大小相同,则重新解释将整数转换为指针双射是否具有双射作用?
- 使用 "stringstream " 将字符串转换为整数
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 如何检测 std::vector::emplace_back 上的隐式转换损失整数精度
- 如何防止双精度值到整数的隐式转换
- 为什么此指针值不能转换为整数的规则是什么?
- 如何解决隐式转换丢失整数精度:'size_t'(又名"无符号长")到'int'警告?
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- 为什么在将 void 指针转换为整数指针时出现分段错误
- 将字符串(可以是十进制字符串或十六进制字符串)转换为整数C++
- 整数类型应该显式转换(例如"int"到"无符号")还是只会增加混乱?
- 如何使用 STL 算法将整数向量转换为字符串向量?
- 无法将"整数 (*)[m]"转换为"整数 (*)[100000]
- 静态强制转换允许转换对象指针,但不允许转换整数