在C中将临时字符串转换为int

时间:2019-05-24 18:08:21

标签: c string int

作为标题,我需要将一个随意的字符串(例如“ elephant”)转换为int类型。我已经知道 stdlib.h 库的 atoi strtol 函数。但是,这些对临时字符串不起作用(返回值始终为0)。这样的功能还存在吗?

2 个答案:

答案 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;
 }

...等等。请记住,这需要时间。