wskaźnik do stringa

0

Mając wskaźnik do stringa jak poprzez ten wskaźnik dostać się do indeksu tego stringa. Powiedzmy jest string a="cos tam" i jest do niego wskaźnik, więc jak uzyskać wartość dla tego wskaźnika do a[2]?

1

no jak znasz operacje na wskaźnikach i wiesz że https://en.cppreference.com/w/cpp/string/basic_string/operator_at
to zdaje mi się że jest to jasne. Podpowiedź jak byś sie dostał normalnie do wartości z pod wskaźnika? Z resztą wskaźnik do string, nie lepiej wysyłać referencję? string_view? przez wartość.

2

Wskaźniki do wewnętrznego stanu std::string są tymczasowe i to ogólnie ryzykowne próbować na nich polegać. Jeżeli chciałbyś indeks C stringa to wystarczy pamiętać, że stringi w C to takie zakamuflwanego tablice, czyli ciągły ciąg pamięci więc możemy użyć arytmetki wskaźników poprzez odjęcie adresu początku naszej pamięci, otrzymanego przez użycie nazwy naszej tablicy, od znanego nam adresu znaku:

const char *str = "nAp";
const char *str_A_ptr = str + 1;

const size_t idx_A = str_A_ptr - str;
std::cout << idx_A; // wyswietli indeks 1
1

Chodzi ci o coś takiego?

string a = "aaaa";
string* a_ptr = &a;
std::cout << (*a_ptr)[2];

?

2

stringa czy c-stringa?

c-string

const char *a="cos tam";
cout<<a[2]<<endl;
cout<<*(a+2)<<endl;
cout<<*(2+a)<<endl;
cout<<2[a]<<endl;

string

string a="cos tam";
string *p=&a;
cout<<(*p)[2]<<endl;
cout<<*(*p+2)<<endl;
cout<<*(2+*p)<<endl;
cout<<2[*p]<<endl;

1 użytkowników online, w tym zalogowanych: 0, gości: 1