|
error 님이 쓰신 글 :
: 문자를 어떻게 넣죠?
:
: char *temp[100];
:
: for(int i=0;i <= Pass->Text.Length();i++){
: *temp[i] = Pass->Text[i].c_str();
: }
: 흠.. 저렇게 하니까 왼쪽 구조체에도 *을 넣으라고 나오네요..
:
: 맨날 pascal만 하다가 씨할려니까 문법도 헤깔리고 씨에서 가리는 게 넘많아서
:
: 슬슬짜증이날려고 하네요.. 흠...... 저 소스의 원래뜻은 한글자식 temp에 edit박스의 내용물을
:
: 쑤셔넣는 것입니다..
:
: 글구
: char* temp[100]
: char *temp[100]
: 의 차이점도 좀 설명해주시면 감사 ㅡㅡ;;;; 포인터가 남발(?)하는 상황에서 헤깔리네요....
일단 char* temp[100] 과 char *temp[100] 의 차이점은 없습니다.. 표현을 어떻게 하느냐는 개인의
성향이 문젠데 일단 코드 상으로는 똑 같은 문법입니다..
위의 소스코드에서는 for 문 안에서 *temp[i] = Pass->Text[i].c_str() 이라고 적으셨는데요..
*temp[i] 라는 것 자체는 포인터가 아니고 포인터 변수 안에 있는 값을 의미합니다..
그러니까.. *temp[i] 에는 포인터 값을 넣을수 없고 문자열을 넣을수가 있겠죠...
우측에 Pass->Text[i].c_str() 이라는 것은 char* 를 의미하는 것이기 때문에 Type 에러가 날
것입니다..
만약에 temp라는 곳에 edit박스의 내용을 넣으려면
temp[i] = Pass->Text.c_str(); 이라는 형태나 아니면 *temp[i] = Pass->Text; 정도가 될 것 같네요
그런데 Pass->Text[i] 라는 것은 어떤 의미로 적었는지를 잘 모르겠습니다..
아무튼 하나의 에디트 박스안의 내용을 넣으려면
char temp[100];
temp = Pass->Text; 로 하던지
char *temp;
temp = Pass->Text.c_str(); 형태로 하던지..
char *temp;
temp = new char[100];
strcpy( temp, Pass->Text.c_str() );
// 처리
delete temp;
형태로 하면 될것 같네요... 그럼 참고하시길...
|