我是C++的新手,我正在尝试做一些非常基本的工作。如何将整数值转换为C++中的特定ascii字符
我在C++中有一个小循环,它只是显示一个数字序列,我想将这些数字转换为特定的ASCII字符。事情是这样的:
for (int k = 0; k < 16; k++) {
display(65+k);
}
而结果应该是这样的:
ABCDEFGH ...等
任何想法?
谢谢!
我是C++的新手,我正在尝试做一些非常基本的工作。如何将整数值转换为C++中的特定ascii字符
我在C++中有一个小循环,它只是显示一个数字序列,我想将这些数字转换为特定的ASCII字符。事情是这样的:
for (int k = 0; k < 16; k++) {
display(65+k);
}
而结果应该是这样的:
ABCDEFGH ...等
任何想法?
谢谢!
这将是
#include <iostream>
int main() {
for (int k = 0; k < 16; k++) {
std::cout.put(65+k);
}
}
基于澄清C++
编辑: 从错误信息判断display
需要C风格串。你可以建立一个这样的:
for (int k = 0; k < 16; k++) {
char str[2] = { 65 + k }; // Implicitly add the terminating null.
display(str);
}
这是一个不正确的解决方案。 OP希望输出* ASCII *字符,但'A'的值取决于主机编码。如果你在AS/400上编译它,那么它会发送0xc2 0xc3 0xc4到输出流。 – 2010-07-28 22:05:23
@Luther OP特别要求结果是字符。我不明白在这样的系统上'std :: cout'如何不会在显示器上将''A'+ 1'转换为''B'',而不管主机实际使用什么数字表示。 – 2010-07-28 23:08:24
cout不知道如何在显示屏上显示'A'。它只知道如何将字符代码发送到您的显示器(或文件),然后直到显示器解释代码并显示特定代码的'A'。如果程序和显示不符合“A”的代码,则说明您有问题。 – 2010-07-28 23:20:24
一个改进将是用'A'代替65. – 2010-07-28 21:48:53
不是真的。其实我们并不能保证'A'后面的代码完全是字母。如果在AS/400上运行该程序,则该程序将产生一个乱码文件,供任何人以ASCII格式读取。 65是* correcter *而不是'A',但'A'对于没有记住ASCII表的松散^ H^H^H^H^H的人更好。 – 2010-07-28 22:14:33
Luther是正确的,该解决方案将在任何至少具有7位宽的流的环境中可移植地生成ASCII字符(而C char类型必须至少为8位,在写入磁盘时不会阻止缩小转换或标准输出),而不管环境是否使用ASCII作为其原生格式。 – 2010-07-29 13:19:10