使用[]访问字符串元素会打印随机结果

时间:2019-03-21 22:17:55

标签: c++ string

因此,作为学校项目的一部分,我正在做一个中间平方哈希函数,当我只问一个元素时,我的计算机如何从字符串中取出两个随机字符串元素,这让我感到困惑。这是下面代码中的一个小例子。

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()有关。如果您想查看更多代码,请告诉我。

2 个答案:

答案 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)相同。