2010-07-28 62 views
1

我是C++的新手,我正在尝试做一些非常基本的工作。如何将整数值转换为C++中的特定ascii字符

我在C++中有一个小循环,它只是显示一个数字序列,我想将这些数字转换为特定的ASCII字符。事情是这样的:

for (int k = 0; k < 16; k++) { 
     display(65+k); 
    } 

而结果应该是这样的:

ABCDEFGH ...等

任何想法?

谢谢!

回答

0

这将是

#include <iostream> 
int main() { 
for (int k = 0; k < 16; k++) { 
     std::cout.put(65+k); 
    } 
} 

基于澄清C++

+2

一个改进将是用'A'代替65. – 2010-07-28 21:48:53

+0

不是真的。其实我们并不能保证'A'后面的代码完全是字母。如果在AS/400上运行该程序,则该程序将产生一个乱码文件,供任何人以ASCII格式读取。 65是* correcter *而不是'A',但'A'对于没有记住ASCII表的松散^ H^H^H^H^H的人更好。 – 2010-07-28 22:14:33

+0

Luther是正确的,该解决方案将在任何至少具有7位宽的流的环境中可移植地生成ASCII字符(而C char类型必须至少为8位,在写入磁盘时不会阻止缩小转换或标准输出),而不管环境是否使用ASCII作为其原生格式。 – 2010-07-29 13:19:10

2

编辑: 从错误信息判断display需要C风格串。你可以建立一个这样的:

for (int k = 0; k < 16; k++) { 
    char str[2] = { 65 + k }; // Implicitly add the terminating null. 
    display(str); 
} 
+0

这是一个不正确的解决方案。 OP希望输出* ASCII *字符,但'A'的值取决于主机编码。如果你在AS/400上编译它,那么它会发送0xc2 0xc3 0xc4到输出流。 – 2010-07-28 22:05:23

+0

@Luther OP特别要求结果是字符。我不明白在这样的系统上'std :: cout'如何不会在显示器上将''A'+ 1'转换为''B'',而不管主机实际使用什么数字表示。 – 2010-07-28 23:08:24

+0

cout不知道如何在显示屏上显示'A'。它只知道如何将字符代码发送到您的显示器(或文件),然后直到显示器解释代码并显示特定代码的'A'。如果程序和显示不符合“A”的代码,则说明您有问题。 – 2010-07-28 23:20:24

相关问题