Как я могу получить n-й символ строки? - PullRequest
14 голосов
/ 10 декабря 2011

У меня есть строка,

char* str = "HELLO"

Если бы я хотел получить только E от этого, как бы я это сделал?

Ответы [ 3 ]

23 голосов
/ 10 декабря 2011
char* str = "HELLO";
char c = str[1];

Имейте в виду, что массивы и строки в C начинают индексироваться с 0, а не с 1, поэтому "H" - str[0], "E" - str[1], первое "L" - str[2] ии так далее.

13 голосов
/ 10 декабря 2011

Вы бы сделали:

char c = str[1];

Или даже:

char c = "Hello"[1];

изменить: обновлено, чтобы найти "E".

4 голосов
/ 10 декабря 2011

Обозначения массива и арифметика указателей могут использоваться взаимозаменяемо в C / C ++ (это не так для ВСЕХ случаев, но к тому времени, когда вы туда попадете, вы сами найдете случаи).Таким образом, хотя str является указателем, вы можете использовать его, как если бы он был массивом:

char char_E = str[1];
char char_L1 = str[2];
char char_O = str[4];

... и так далее.То, что вы также можете сделать, это «добавить» 1 к значению указателя на символ str, который затем будет указывать на второй символ в строке.Тогда вы можете просто сделать:

str = str + 1; // makes it point to 'E' now
char myChar =  *str;

Надеюсь, это поможет.

...