将ascii转换为char

时间:2018-04-29 13:20:31

标签: c++ c++11

我有以下代码段

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

1 个答案:

答案 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