不能使用* 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 ++中,如果将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代码,则必须将字符串分成多个块,而不只是一个字符。