因此,作为学校项目的一部分,我正在做一个中间平方哈希函数,当我只问一个元素时,我的计算机如何从字符串中取出两个随机字符串元素,这让我感到困惑。这是下面代码中的一个小例子。
string squaredKey = "54756";
int middleDigit = (ceil(stringSquareKey.length()/2));
cout << squaredKey[middleDigit] << endl; // this prints out 7 as expected
string temp = to_string(squaredKey[middleDigit]);
cout << temp << endl; // This prints out 55 for some reason.
我不知道到底是什么问题,但是我认为这与to_string()
有关。如果您想查看更多代码,请告诉我。
答案 0 :(得分:1)
std::to_string
用于将数字转换为字符串。 C ++的不幸事实是char
本身也是一个数字,尽管它通常用于表示ASCII值。
to_string(squaredKey[middleDigit]);
的工作是获取ASCII值'7'
(非 7
)并将其转换为十进制数字55。
您应该使用std::string
构造函数,该构造函数接受char
和一个计数:
std::string temp(1, squaredKey[middleDigit]);
答案 1 :(得分:0)
std::to_string
将数字值转换为std::string
,因此将其输入视为数字值。 stringSquareKey.length()/2
给出字符值'7'
,当将其视为数字值时,它对应于ASCII代码55
。
因此您的代码与string temp = to_string(55)
相同。