Ben std::string
her karakterin adresini yazdırmak için çalıştı. Ama beklendiği gibi diziye için adresini vererek iken bu çıktıyı çıkan edilir std::string
ile dahili olarak neler olduğunu anlamak amn't. Birisi neler olduğunu açıklayabilir mi lütfen?Adres :: dize
#include <iostream>
#include <string>
using namespace std;
int main(){
string str = "Hello";
int a[] = {1,2,3,4,5};
for(int i=0; i<str.length(); ++i)
cout << &str[i] << endl;
cout << "**************" << endl;
for(int i=0; i<5; ++i)
cout << &a[i] << endl;
return 0;
}
Çıktı:
Hello
ello
llo
lo
o
**************
0x7fff5fbff950
0x7fff5fbff954
0x7fff5fbff958
0x7fff5fbff95c
0x7fff5fbff960
ilk denemeden kullanabilir, hangi (o '\ 0' vurur veya olmamalıdır bir adres temas edene kadar) o C tarzı dize yazdırmak için çalışacağım anlamına gelir. Yaptığınız ikinci şey sadece bir dizi “int” ile çalışıyor ve int * 'adresini yazıyor. std :: string' NULL' sonlandırılmış 'olması garanti edilmez' Ayrıca, çünkü gerçek kodda eski kullanmamaya dikkat edin. – birryree
Buradaki fark, std :: string tarafından değil, std :: ostream için char * 've' int * 'arasındaki farklı çıkış mantığından kaynaklanmıyor. – Thomson