std::string
의 각 문자의 주소를 인쇄하려고했습니다. 그러나 나는 내부적으로 어떤 일이 일어나고 있는지를 이해하지 못하고 있는데, 그 이유는 배열의 경우 예상대로 주소를 제공하는 동안 std::string
이 결과로 발생합니다. 누군가가 무슨 일이 일어나는지 설명해 주시겠습니까?std :: string의 각 문자의 주소
#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;
}
출력 :
Hello
ello
llo
lo
o
**************
0x7fff5fbff950
0x7fff5fbff954
0x7fff5fbff958
0x7fff5fbff95c
0x7fff5fbff960
첫 번째 시도를 사용할 수 있습니다, 이는 C 스타일의 문자열을 인쇄하려고 시도 할 것임을 의미합니다 ('\ 0'을 치거나 가질 필요가없는 주소에 닿을 때까지). 두 번째로하는 일은'int' 배열을 실행하고'int *'주소를 출력하는 것입니다. 또한'std :: string'은'NULL'으로 끝나기 때문에 실제 코드에서는 사용하지 않도록주의하십시오. – birryree
차이점은 std :: string 때문이 아니라 std :: ostream에 대한'char *'와'int *'사이의 다른 출력 논리 때문입니다. – Thomson