2013-03-19 7 views
4

Я пробовал много решений для преобразования char в Ascii. И у всех есть проблема.Преобразование символа в ASCII?

Одно решение было:

char A; 
int ValeurASCII = static_cast<int>(A); 

Но VS упоминает, что static_cast является недопустимым преобразование типа !!!

PS: мой А всегда один из специальных символов (а не числа)

+3

возможно DUP http://stackoverflow.com/questions/5029840/convert-char-to-int-in-c-and-c –

+0

INT ValeurASCII = (INT) A: – Neppinger

+6

@Neppinger: Почему даже бросать?! –

ответ

0

Вы можете использовать символы как в виде отдельных байт целых чисел.

5

Гм, что случилось с этим:

#include <iostream> 

using namespace std; 

int main(int, char **) 
{ 
    char c = 'A'; 

    int x = c; // Look ma! No cast! 

    cout << "The character '" << c << "' has an ASCII code of " << x << endl; 

    return 0; 
} 
+0

srand? Ранд? Никогда не слышал об этом! – user2187476

+0

Игнорировать их - они не влияют на «логику» «преобразования»; они были там, чтобы убедиться, что каждый раз, когда вы запускаете программу, у вас есть другой персонаж. Я их вынул. –

+0

int x = c; литье. То, что вы здесь делаете, - это неявное кастинг, потому что «x» - целое число, а «c» - char. Это эквивалентно int x = (int) c, (который является явным литом) – thinkquester

12

char является интегральным типом. Когда вы пишете

char ch = 'A'; 

вы устанавливаете значение ch на любой номер компилятор использует для представления символа 'A'. Обычно это код ASCII для 'A', но это не требуется. Вы почти наверняка используете систему, использующую ASCII.

Как и любой числовой тип, вы можете инициализировать его с обычным номером:

char ch = 13; 

Если вы хотите сделать арифметические действия значение char, просто сделать это: ch = ch + 1; и т.д.

Однако в чтобы отобразить значение, которое вы должны получить в предположении, что в библиотеке iostreams вы хотите отображать значения char как символы, а не числа. Есть несколько способов сделать это.

std::cout << +ch << '\n'; 
std::cout << int(ch) << '\n'