字符串中的int [保留]

问题描述 投票:0回答:1

不能使用* int,因为数字太长了,现在尝试将其“转换”为无效ASCII代码中的int,但是它只是不想成为int。始终只重复ASCII而不是文本。

这是电话:

ASCII("072101108108111032119104097116115032117112");

发生这种情况:

 void ASCII(string ascii)
{           
    int i = 0;
    for (int i = 0; i < ascii.size(); i++) {

            auto g = static_cast<int>(ascii[i]);
            int d = (int)ascii[i];

            std::cout << char(d);  /* ---> Still not showing Text from ASCII (int not set)*/
            std::cout << char(g); /*  ---> Still not showing Text from ASCII (int not set)*/


    }
}

如何使其工作?

所需结果:

std::cout << ascii[i];

应显示ASCII输入的字母

c++ ascii
1个回答
0
投票

在C ++中,如果将cout的某些内容作为可打印字符拖到控制台,则将其打印为char

如果要打印我们的数值,则需要将其实际打印为int

std::cout << d;
std::cout << g;

编辑:我想我现在(也许)理解您的困惑。

int d = (int)ascii[i];之类的东西将创建特定字符的ASCII / UTF(取决于编译器使用的内容)表示。因此,例如,ascii[i]可能会导致48。但是,当您将其转换回char acter时,48"0"的表示形式(对于ASCII。同样,您的编译器可能使用不同的转换方案。),因此int会转换为字符“ 0“。

您似乎想做的是将字符“ 0”视为数字0。为此,您需要std::stoi()。这会将字符“ 0”转换为实际的std::stoi()。然后,可以通过将函数0的结果设置为0,将此0转换为ASCII代码std::stoi()

请注意,如果您希望一个以上的字符组成一个ASCII代码,则必须将字符串分成多个块,而不只是一个字符。

© www.soinside.com 2019 - 2024. All rights reserved.