在C++中将字符转换为整数

Our*_*age 2 c++ string char

如何将字符串中的每个字符设置为整数?这是我编写哈希函数时必须做的第一件事.我必须将字符串中的每个字符设置为一个整数,以便我可以将它们的值相加.请帮忙!它是这样的吗?

    int hashCode(string s)
{
   int Sum = 0;
   for(int i=0; i<strlen(s); i++)
   {
      Sum += (int)s[i];
   }
   return Sum;
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*fin 13

是 - 在C和C++中,char只是一个小整数类型(通常范围从-128到+127).当你对它进行数学运算时,它通常会被int自动转换,所以你甚至不需要你的演员阵容.

顺便说一句,你真的不想strlen(s)在你的for循环中使用停止条件.至少在大多数编译器中,这会强制它在strlen(s)每次迭代时重新进行评估,因此您的线性算法恰好变为二次方程式.

size_t len = strlen(s);

for (int i=0; i<len; i++)
    Sum += s[i];
Run Code Online (Sandbox Code Playgroud)

或者,如果s实际上是a std::string,则参数类型建议:

for (int i=0; i<s.size(); i++)
    Sum += s[i];
Run Code Online (Sandbox Code Playgroud)

还有一种可能性:

Sum = std::accumulate(s.begin(), s.end(), 0);
Run Code Online (Sandbox Code Playgroud)


pre*_*lic 6

字符通常在内部由整数表示,因此s[i]可以分配给整数。

如果您有 char'1'并且想要存储 int 1,那么您可以这样做s[i]-'0'