如何获取字符串的第n个字符?

22

我有一个字符串,

char* str = "HELLO"

如果我只想获取其中的 E,我该怎么做?

3个回答

29
char* str = "HELLO";
char c = str[1];

请记住,在C语言中,数组和字符串的索引从0开始而不是1,因此"H"是str [0],"E"是str [1],第一个"L"是str [2]等等。


如果编码是utf8且不是所有字符都是ascii怎么办? - Sean Letendre

18

你可以这样做:

char c = str[1];

或者更甚:

char c = "Hello"[1];

编辑:已更新以找到“E”。


哎呀,我看错了。我本来想选“O”的。不过答案仍然适用。 - Graham Perks
2
@Aspyn 只是提供信息,像这样访问字符串是可以的,但是在 C 中尝试修改它是非法的(您不能执行 str[0] = "J",其中 str 指向一个字符串常量)。 - Paul

5

在C/C++中,数组表示法和指针算术可以互换使用(这并非对于所有情况都成立,但在你掌握到那些情况之前,你会自己发现)。因此,尽管str是一个指针,你可以像使用数组一样使用它:

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

...等等。您还可以将指向字符str的指针的值“增加”1,然后该指针将指向字符串中的第二个字符。然后,您可以简单地执行:

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

我希望这能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接