0
문자열에서 방어 적이기 및 C++에서 문자열 구조, 즉, 다음 코드 :나는 CString을에 문자열에서 방어 적이기에 의해 혼란 스러워요
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int main()
{
string str="hahah";
cout<<"the length of the coverted c string is: "<<strlen(str.c_str())<<endl; // 5
char *char1=new char[6];
memcpy(char1, str.c_str(), strlen(str.c_str()));
cout<<char1<<endl;
// (1) output is "hahah", why copying only 5 bytes also produce correct result? Why the last byte default to be \0?
cout<<sizeof(str)<<endl; // (2) why the size of str is8, rather than 6
memcpy(char1, &str, 6);
cout<<char1<<endl; // (3) output is strange. Why ?
return 0;
}
어느 한 나를 설명 할 수있는 이유 (1) , (2), (3)에 대한 의견은 어떻게됩니까?
당신이 답을 체크 아웃해야합니다 : http://stackoverflow.com/a/5952598/4182012 –