作为标题,我需要将一个随意的字符串(例如“ elephant”)转换为int类型。我已经知道 stdlib.h 库的 atoi 和 strtol 函数。但是,这些对临时字符串不起作用(返回值始终为0)。这样的功能还存在吗?
答案 0 :(得分:1)
atoi
的作用是将“整数字符串”转换为整数值。这与itoa
相反。
字符串"elephant"
没有数字含义。如果要使用int
对其进行编码,则需要一个8字节的整数和一个endian convention。任何更长的字符串都需要分成多个整数值。
显然,此方法的实用性令人怀疑,因为它比字节数组有什么优势?
因此简短的答案是没有功能,因为没有将任意字符串编码为整数的功能。请记住,在大多数平台上,只有2 32 或2 64 可能的整数值,但是2 2 36 可能的字符串值在典型的现代计算机上。
您不能将2 68719476736 可能的字符串值(例如8GB)映射为2 64 整数。
如果您确实想将任意单词映射到数字,则需要一个查找表(例如字典),该表为每个可能的输入单词分配了预定义的整数值。由于没有这样的单词列表,因此详尽的列表太大了,尽管有表情符号,但大象的数字没有标准,这是您必须自己做的。
答案 1 :(得分:0)
您始终可以使用strncmp
比较字符串。
类似
int strParse(char * str){
if(strncmp(str,"elephant",8) == 0) return 42;
return 0;
}
...等等。请记住,这需要时间。