|
C++Builder 의 AnsiString은 한가지 특성을 가지고 있습니다..
첫번째로 숫자를 그냥 대입이 가능하다는것.
AnsiString A = 1;
이러면 A는 "1" 이 됩니다
그리고 C++에서의 NULL은 Pointer가 아니라 그냥 숫자 0입니다. nullptr 키워드가 아직 빌더엔 추가되지 않았죠
그럼 A == NULL 이라고 비교하면 A 가 빈문자열인지 비교하는게 아니라 "0" 인지 아닌지 비교하게 됩니다.
빈문자인지 비교를 원하면 Temp[i] == "" 로 쓰셔야합니다
축구 님이 쓰신 글 :
: 엄청 궁금한 점이 있는데요
:
: 헤더에
: AnsiString Temp[100];
: int count;
:
: 이러면 초기화 따로 필요없이 쓸수 있잖아요
:
: 그래서 for문을 돌렸습니다.
: count = 0;
: count++;
:
: for(int i = 0, i < count; i++)
: {
: if(Temp[i] == NULL)
: {
: Temp[i] = "ABCED";
: }
: }
:
: 이랬는데 Temp가 자동 초기화 되지니까 0번째값이 NULL 맞는데 왜 저 if문을 그냥 지나갈까요?
:
: 진짜 이해가 안되요 ㅠ
:
:
: 아제나 님이 쓰신 글 :
: : AnsiString은 char 처럼 자료형(data type)이 아니라 오브젝트(object)입니다.
: :
: : 그러니까 ㅠㅠ
: :
: : 쓰신 문장은 완전히 잘못되었습니다.
: :
: : AnsiString 사용법부터 차근차근 다시 봐주세요~
: :
: :
: :
: :
: :
: : 축구 님이 쓰신 글 :
: : : 헤더에
: : : AnsiString Temp[100];
: : : AnsiString Str[100];
: : :
: : : 2개를 선언하고 본문에
: : :
: : : memset(Temp, NULL, Temp->Length());
: : : memset(Str, NULL, Str->Length());
: : : 초기화 해주고
: : :
: : : Temp[0] = "test";
: : :
: : : for(int i = 0; i < Temp->Length(); i++)
: : : {
: : : if(Temp[i] != NULL)
: : : {
: : : Str[i] = Temp[i];
: : : }else if(Temp[i] == NULL){
: : : continue;
: : : }
: : : }
: : :
: : : 라고 했는데 한번if첫번째 문이고 2번째 부터는 else if 돌아야 정상아닌가여? 브레이크 포인트 걸어서 보니까 4번인가
: : :
: : : 정도 돌면서 if 첫번째 문을 실행하던데 왜그런거죠?
|