我目前正在做一个项目,我需要创建两个数据结构,这两个数据结构将用于包含字符串。它们中的一个必须是链表的形式,我已经被告知,对于字母表中的每个字母,我已经将单词分离到它内部的单独列表中。我需要考虑效率,所以我有一个大小为26的头指针数组,并且希望将给定单词的第一个字符转换为整数,以便可以将其放入下标中,例如:
//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语句的情况下实现这一点
发布于 2013-02-22 18:06:46
将i设置为第一个字符的值时,将获得ASCII值。所以我超出了你的0-25范围:看man ascii,你可以通过减去第一个alaphabet ascii字母来减少它。(请小心处理此案)
std::string s("zoro");
int i = s[0];
std::cout << "Ascii value : " << i << " Reduced : " << i - 'a' << std::endl;
其产生ASCII值'z‘= 112,并且如预期的那样产生用于减小值的25。
发布于 2013-02-22 17:59:22
我认为你混淆了值和表示。"Ten“"10”和"1 1 1“都是相同的值,只是表示方式不同。
我一直在搜索,我似乎找到的所有东西都是如何将字符串中的数字字符转换为整数,而不是字母字符
这没什么区别。不管怎样,字符总是用整数表示的。这只是一个表示的问题。只要以你想要的方式呈现价值即可。
顺便说一下,这是程序员必须理解的一个关键概念。因此,值得花一些时间来考虑它。
这种误解的一个典型例子是这样一个问题:“我有一个变量i
,它有一些十进制值。我如何让它存储十六进制的值?”当然,这没有任何意义,它存储值,而十六进制和十进制是表示。如果你有十辆车,你有十辆车,而不是十进制或十六进制。如果i
的值为10,则值10的格式为i
,而不是十进制或十六进制的十的表示形式。
当然,在显示存储在i
中的值时,必须选择如何表示它。您可以将其显示为ten
、10
、| | | | | | | | | | |
或其他格式。
您可能有一个字符串,该字符串以十六进制表示值"ten“,并且您可能需要将该值赋给一个变量。这需要从表示转换为它所表示的值。
有输入和输出函数,它们以各种表示形式输入和输出值。
发布于 2013-02-22 18:02:21
我怀疑您想要将存储在字符串中的数字作为字符转换为整数,例如,将字符'9'
转换为整数9
。
为此,请执行以下操作:
char c = '9';
int x = c - '0';
不管你的电脑是使用ASCII还是EBCDIC,它都可以工作。
https://stackoverflow.com/questions/15030245
复制相似问题