2010-07-28 4 views
1

Я новичок в C++, и я пытаюсь сделать что-то, что должно быть довольно простым.как преобразовать целочисленное значение в конкретный символ ascii в C++

У меня есть небольшая петля на 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

Улучшение было бы заменить 65 на «A» –

+0

Не совсем. На самом деле мы не гарантируем, что коды, следующие за «А», являются буквами. Если бы это выполнялось в AS/400, программа создавала файл тарабарщины для всех, кто читал бы его как ASCII. 65 является * correcter *, чем «A», но «A» более приятен для свободных людей H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H P H H H H P H H H H H P P H H H H P H H H P H H H H P H H H H P H H H H H P H H H H H H H H U H U H U V H U H W H W H W H H H H H H H H H H H H H H H H H H H H U H U H H U Z A –

+0

Лютер прав, что это решение будет переносить произвольные символы ASCII в любой среде с потоками по меньшей мере в 7 бит (в то время как тип C 'char' должен быть не менее 8 бит, что не мешает сужению преобразования при записи на диск или stdout), независимо от того, использует ли среда ASCII в качестве собственного формата. –

2

EDIT на основе разъяснений: Судя по сообщению об ошибке 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 .. в выходной поток. –

+0

@Luther OP специально запросил, чтобы результатом были символы. Я не понимаю, как «std :: cout» в такой системе не переводил бы «A + +», например, в «B» на дисплее, вне зависимости от того, какое числовое представление фактически использует хост. –

+0

cout не знает, как сделать «A» на вашем дисплее. Он знает, как отправлять коды символов на ваш экран (или файл) и его до вашего дисплея, чтобы интерпретировать коды и показывать «A» для определенного кода. Если программа и дисплей не согласны с кодом для «А», у вас есть проблема. –

Смежные вопросы