2010-07-28 2 views
1

저는 C++을 처음 사용하고 있으며, 꽤 기초적인 것으로해야 할 일을하려고합니다.정수 값을 C++에서 특정 아스키 문자로 변환하는 방법

저는 C++에서 숫자의 시퀀스를 표시하는 작은 루프가 있으며이 숫자를 특정 ASCII 문자로 변환하고 싶습니다. 이런 식으로 뭔가 :

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

그리고 그 결과는 다음과 같아야합니다

ABCDEFGH ... 등

어떤 아이디어가?

감사합니다. 설명에 따라 C++

답변

0

: 오류 메시지 display에서 판단은 C 스타일의 문자열을 사용합니다. 다음과 같이 빌드 할 수 있습니다.

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

65를 'A' –

+0

으로 바꾸는 것이 좋습니다. 실제로 우리는 'A'다음의 코드가 문자라는 것을 보장하지 않습니다. 이 프로그램이 AS/400에서 실행되면 프로그램은 ASCII로 읽는 사람들에게 횡설수설의 파일을 생성합니다. 65는 'A'보다 * correcter *이지만 'A'는 ASCII 표를 기억하지 않은 느슨한^H^H^H^H^H 사람들보다 더 좋습니다. –

+0

루터 (Luther)는 적어도 7 비트 폭의 스트림을 가진 모든 환경에서이 솔루션이 ASCII 문자를 이식 할 것이라는 점은 맞습니다 (C'char 형식은 적어도 8 비트 여야하며 디스크에 쓸 때 좁히는 변환을 방지하지 못합니다. stdout). 환경이 ASCII를 원시 형식으로 사용하는지 여부에 관계없이. –

2

편집에 대한

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

+0

이것은 잘못된 해결책입니다. OP는 * ASCII * 문자를 출력하려고했지만 'A'값은 호스트 인코딩에 따라 다릅니다. AS/400에서 컴파일하면 출력 스트림에 0xc2 0xc3 0xc4 ..를 보냅니다. –

+0

@Luther OP는 결과가 문자가되도록 구체적으로 요청했습니다. 나는이 시스템에서'std :: cout'이 호스트가 실제로 사용하는 숫자 표현에 관계없이'A '+ 1'을 예를 들어''B ''로 변환하지 않을 것이라는 것을 이해하지 못한다. –

+0

cout은 디스플레이에 'A'를 만드는 방법을 알지 못합니다. 문자 코드를 디스플레이 (또는 파일)로 보내고 디스플레이를 통해 문자 코드를 해석하고 특정 코드에 'A'를 표시하는 방법 만 알고 있습니다. 프로그램과 디스플레이가 'A'에 대한 코드에 동의하지 않으면 문제가있는 것입니다. –