2011-12-10 7 views

cevap

11

Sen yapacağını: hatta

char c = str[1]; 

Veya:

char c = "Hello"[1]; 

düzenleme: "E" bulmak için güncellendi.

+2

Bu "E" alacak? – Thanatos

+1

hayır, ama bunu anlamak ve bu kendim için çalışmak yapabilirsiniz – Aspyn

+0

Eh, fındık, ben oynanırsa. Bunun yerine "O" için gidiyordum. Yine de cevap hala geçerli. Böyle bir dize gayet erişen, ancak bunu değiştirmeye çalışıyorum C' 'yasadışı Bilginiz olsun –

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

"H" C diziler ve dizeleri 0 ziyade 1'de indeksleme başlar unutmayın, bu yüzden, "E" str[0] olduğunu str[1] olduğunu ilk "L" str[2] ve böylece açık.

4

Dizi notasyonu ve işaretçi aritmetiği (bu TÜM durumlar için geçerli değildir ama oraya gidinceye kadar, sen davaları kendinizi bulacaksınız) C/C++ içinde birbirinin yerine kullanılabilir. böylece

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

... ve: str bir işaretçi olsa, bunu kullanabilirsiniz Yani bu bir dizi şöyle sanki. Yapabildiğiniz şey, imlecin değerine, işaretçinin ikinci karakterini gösterecek olan str karakterine "ekle" 1 olacaktır. Sonra basitçe yapabilirsiniz:

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

umarım bu yardımcı olur.

0
#include <iostream> 
#include <string> 
using namespace std; 
int main() 
    {string a="HELLO";char b=a[1]; 
    cout<<b; 
return 0;}