C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[67492] Re:Re:Re:Re:Re:AnsiString 형변환 질문 드립니다
하준희 [hanjh] 1651 읽음    2012-06-12 15:39
정말 감사합니다 문제해결했습니다^^;변수하나 줄였네요

축구 님이 쓰신 글 :
: wchar은
:
: strcpy 말고 wcscpy 써야 할거에요 .c_str()대신 .w_str();
:
:
: 하준희 님이 쓰신 글 :
: : 장성호님 안녕하세요 답변 감사합니다.
: : char를 wchar_t로 변경하고 UnicodeString으로 변경하면 될줄알았는데 잘안되어 질문드립니다
: :
: :
: : wchar_t c[100]; 
: : strcpy(c, Edit1->Text.c_str());   // [BCC32 Error] client.cpp(39): E2034 Cannot convert 'wchar_t *' to 'char *'
: : 

: :
: : 다음과같이 해도 에러가 발생되는데 제가 뭔가 잘못된 코드를 작성한건지요?
: : 가르침 감사드립니다.
: :
: : 장성호 님이 쓰신 글 :
: : : 빛의 암살자님 답변이 좀 이상하네요
: : : 잘못된 설명과 더 심각한 문제의 코드를 제시하셨네요
: : :
: : :
: : : 하준희님 코드는..
: : :
: : : C++Builder6에서는 문제 없습니다.
: : : 그런데 에러가 난다고 하시니
: : :
: : : 아마 Builder버젼이 2009이상인듯 하네요
: : :
: : : 2009이상에서는 Control의 Text 및 Caption이 AnsiString이 아니라
: : : UnicodeString입니다.
: : :
: : : UnicodeString은 c_str() 에  char* 가 아닌 wchar_t * 를 return 합니다.
: : :
: : : wchar_t 배열이면 문제 없겠지만
: : :
: : : char 배열이면 AnsiString으로 먼저 변환한후에 할수 밖에 없을것 같습니다.
: : :
: : :
: : : 참고로
: : : AnsiString으로 변환할때  그냥 대입하시는것이 편리합니다.
: : :
: : :
: : : //2009이상에서 UnicodeString를 char배열에 복사하려면..
: : :      char c[100];
: : :      AnsiString a=Edit1->Text;
: : :      strcpy(c, a.c_str());
: : : 

: : :
: : : 아 그리고..
: : : 문자열이 너무 길면 문제가 될수도 있겠죠..
: : :
: : : 이상입니다.
: : :
: : : 그럼..
: : :
: : : 빛의암살자 님이 쓰신 글 :
: : : :
: : : :     char *c;
: : : :      strcpy( c, Edit1->Text.c_str() );
: : : :  

: : : :
: : : : 이렇게 해야 가능합니다.
: : : :
: : : : 질문글에서는 c 를 배열로 선언했으니, c 는 배열명이 됩니다.
: : : : 배열명은 상수이므로 대입이 불가능하죠.
: : : :
: : : : 또 하나, 위처럼 소스를 짜는 것은 매우 위험한 상황이 올 수 있습니다.
: : : : 메모리 몇 바이트 줄이자고 짜 놓은 소스가
: : : : 다른 메모리 영역까지 침범하게 되는 경우가 발생될 수 있으니...
: : : :
: : : :
: : : : 하준희 님이 쓰신 글 :
: : : : :
: : : : :    char c[100];
: : : : :     AnsiString a;
: : : : : 
: : : : :     a = Edit1->Text.c_str();
: : : : :     strcpy(c, a.c_str());
: : : : : 

: : : : : 에디트박스에 입력된 내용을 char 배열에 값을 복사할려고합니다
: : : : : 제가 위에 넣은 방법대로 하면 잘되는데요
: : : : : 괜히 a변수를 사용해서 메모리 낭비가 되는데
: : : : : 다른방법이 없을까요?
: : : : : strcpy(c,Edit1->Text.c_str()); 하면 에러가 발생하는데

+ -

관련 글 리스트
67481 AnsiString 형변환 질문 드립니다 하준희 1179 2012/06/12
67484     Re:AnsiString 형변환 질문 드립니다 빛의암살자 1207 2012/06/12
67487         Re:Re:AnsiString 형변환 질문 드립니다 장성호 1327 2012/06/12
67490             Re:Re:Re:AnsiString 형변환 질문 드립니다 하준희 1335 2012/06/12
67491                 Re:Re:Re:Re:AnsiString 형변환 질문 드립니다 축구 1457 2012/06/12
67492                     Re:Re:Re:Re:Re:AnsiString 형변환 질문 드립니다 하준희 1651 2012/06/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.