如何将char字符显示为int,而不是ASCII符号

时间:2015-09-30 23:22:40

标签: c++ variables char

我需要将此字符显示为数字,但我会继续获得笑脸,心形和其他ASCII符号。这部分是我认为问题所在:

 s = prefix + ch + '.';

这是整个代码:

int main()
{
    int levels = 2;
    string prefix = "Recursion:";

    sections(prefix, levels);

    system("pause");
    return 0;
}

void sections(string prefix, int levels)
{
    if (levels == 0)
    {
        cout << prefix << endl;
    }
    else
    {
        for (char ch = 1; ch <= 9; ch++)
        {
            string s;
            s = prefix + ch + '.';
            sections(s, levels - 1);
        }
    }
}

3 个答案:

答案 0 :(得分:2)

您正在为字符而不是字符使用int值,因此您将获得在字符集中包含这些代码的任何字符。使用'围绕一个字符来获取特定字符的字符代码:

for (char ch = '1'; ch <= '9'; ch++)
    sections(prefix + ch + '.', levels - 1);

请注意,这取决于字符集(实现定义)中所有连续的数字字符和升序,但对于我能想到的每个字符集都是如此...

答案 1 :(得分:0)

您应该使用std::to_string函数将数字转换为字符串。

答案 2 :(得分:0)

问题是你的for-loop

char ch = 1 //is not a 1
char ch = '1' //instead is (but i'm not sure if you can increment this)
char ch = 49 // is also a 1
希望有所帮助。

https://en.wikipedia.org/wiki/ASCII