我有以下代码段
std::string encodedstr;
if(std::isdigit(encodedstr.at(i))) {
num_of_times = encodedstr.at(i);
std::cout << num_of_times << "\n";
}
输出结果为:
52
51
我试图将它转换为char但输出没有改变
num_of_times = static_cast<char>(encodedstr.at(i));
我在使用mingw64编译器的Windows上
预期产出:
4
3
如何确保投射num_of_times
以使num_of_times
包含上述预期输出。
我的完整代码可以找到here
答案 0 :(得分:2)
代替num_of_times = static_cast<char>(encodedstr.at(i));
使用:
num_of_times = static_cast<char>(encodedstr.at(i)) - '0';
查看here原始代码。
0
的ASCII值为48
。因此,当您从数字(0 - 9)的任何ASCII值替换48
时,例如,从数字4
替换具有ASCII值52
的数字时,我们将获得该精确的十进制值,在我们的案例中52-48 = 4
。
我想,现在你很清楚。
输出:
Input string : AAAABBBAC111c
Encoded string : A4B3AC13c
4
3
1
3
Decoded string : AAAAABBBCCC