当我试图在for循环中替换特定i索引处的字符时,遇到了“超出范围”错误。提示要求接受仅包含数字的密码。
对于passPhrase中不是数字的每个字符,将该字符替换为“0”。
例如:如果输入为32 L04,则输出为:
调整后的密码:32004
这是我到目前为止所拥有的:
string passPhrase;
unsigned int i;
cin >> passPhrase;
for (i = 0; i < passPhrase.size(); ++i) {
if (!isdigit(passPhrase.at(i))) {
passPhrase.replace(passPhrase.at(i), 1, "0");
}
}
cout << "Adjusted password: " << passPhrase << endl;
运行这段代码会输出一个超出范围的错误,我似乎无法理解为什么会这样。
但是,我发现将passPhrase.replace(passPhrase.at(i), 1, "0");
行更改为passPhrase.at(i) = '0';
产生正确的输出。这对我来说是有意义的,可能是更有效的答案,但如果有人能解释为什么我的原始行产生错误,那将是非常感谢!
1条答案
按热度按时间8dtrkrch1#
这是一个typo:
应该是
或者只是