asc и chr эквивалент в C / C ++ - PullRequest
3 голосов
/ 20 июня 2011

Ну, название в значительной степени подводит итог. Я хочу использовать что-то вроде asc ("0") в C ++ и хочу сделать программную платформу независимой, поэтому не хочу использовать 48! Любая помощь приветствуется.

Ответы [ 3 ]

9 голосов
/ 20 июня 2011

Вы можете просто использовать одинарные кавычки для создания символьной константы:

char c = 'a';

Тип символа равен числовому типу, поэтому в действительности нет необходимости в asc иchr эквивалентов.

Вот небольшой пример, который печатает символьные значения строки:

#include <stdio.h>

int main(int argc, char **argv) {
  char str[] ="Hello, World!";

  printf("string = \"%s\"\n", str);

  printf("chars = ");
  for (int i=0; str[i] != 0; i++) 
    printf("%d ", str[i]);
  printf("\n");

  return 0;
}

Вывод:

string = "Hello, World!"
chars = 72 101 108 108 111 44 32 87 111 114 108 100 33 
3 голосов
/ 20 июня 2011

В C и C ++, если вы используете символ, заключенный в '', а не "", это означает, что вы имеете дело с его необработанным двоичным значением.

Теперь в C и C ++ "0" является двухбайтовой литеральной строкой с нулевым символом в конце: '0' и '\0'. (ASCII 48 ASCII 0)

Вы можете достичь желаемого, используя var[0] для строки с нулем в конце или используя одну из процедур преобразования. (atoi() в C, stringstream lib в C ++)

0 голосов
/ 20 июня 2011

Вы получите значение ASCII символа 0, написав: '0'.
Аналогично 'char' для каждого нужного вам символа.

...