2011-12-10 3 views

risposta

11

Fareste:

char c = str[1]; 

O anche:

char c = "Hello"[1]; 

edit: aggiornato per trovare la "E".

+2

Questo ottiene la "E"? – Thanatos

+1

no, ma lo capisco e posso farlo funzionare da solo – Aspyn

+0

Beh, matto, ho letto male. Invece stavo andando per la "O". Ancora la risposta si applica ancora. –

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

tenere presente che gli array e stringhe in C iniziano indicizzazione a 0 anziché 1, so "H" è str[0], "E" è str[1], il primo "L" è str[2] e così via.

4

La notazione delle matrici e l'aritmetica dei puntatori possono essere utilizzate in modo intercambiabile in C/C++ (questo non è vero per TUTTI i casi ma dal momento in cui ci si arriva, si troveranno i casi da soli). Quindi, anche se str è un puntatore, è possibile utilizzarlo come se fosse un array in questo modo:

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

... e così via. Quello che potresti fare è "aggiungere" 1 al valore del puntatore a un carattere str che poi indicherà il secondo carattere nella stringa. Quindi puoi semplicemente fare:

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

Spero che questo aiuti.

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