В следующем коде я не могу понять, почему string
преобразуется в int
таким образом.Почему строка C++ преобразуется в int?
Почему он использует сумму с 0
?
string mystring;
vector<int> myint;
mystring[i+1]=myint[i]+'0';
В следующем коде я не могу понять, почему string
преобразуется в int
таким образом.Почему строка C++ преобразуется в int?
Почему он использует сумму с 0
?
string mystring;
vector<int> myint;
mystring[i+1]=myint[i]+'0';
Этот код преобразует int (предположительно цифру) в символ, который представляет его.
Поскольку символы являются последовательными, а char
s могут рассматриваться как целые числа, символ, обозначающий определенную цифру, фактически может быть описан его расстоянием от '0'
. Таким образом, 0
превращается в символ '0'
, '5'
- символ, который больше '0'
, и т. Д.
Поскольку символы являются последовательными ... _in ASCII_ –
Это эффективная, старая школа и опасный метод, чтобы получить представление символа одной цифры. '0'
будет преобразован в int
, содержащий его код ASCII (0x30 для '0'), а затем он добавляется в myint[i]
. Если myint[i]
равно 9
или ниже, вы можете наложить myint[i]
на символ, который вы получите в результате цифры в виде текста.
вещи не так, как ожидалось, если вы добавите больше 9
к '0'
Вы можете также получить ряд из его символьного представления:
char text = '5';
int digit = text - '0';
Выражение '0'
не строка типа, это char, который хранит символы ASCII, а также может представлять числа от 0 до 255. Таким образом, в арифметических операциях char ведет себя как целочисленный тип.
В строках C a представляют собой массивы символов: статические (char str[N]
) или динамические (char *str = new char[n]
). Строковые литералы помещаются в двойные кавычки ("string"
). Итак, '0'
is char и "0"
is char [1]
Вы не поймете его, так как этот код не преобразует строку в int. – MikeCAT
Или он может это сделать? Я хочу [MCVE] (http://stackoverflow.com/help/mcve). – MikeCAT
Здесь нет какой-то петли. «I + 1» уверен, что это указывает. Предоставление контекста этого фрагмента кода может дать нам дополнительную информацию и позволит нам, возможно, объяснить, почему все это делается для начала. – rbaleksandar