728x90
300x250

[C++] String 함수 - 문자열 비교 방법

 

std::string의 문자열 비교 방법입니다.

 

string a = "abb";

string b = "bbb";

 

if( aaa < bbb ) 

 

이렇게 처리하지 못하는 이유는 string이라는 class 덩어리로 만든 char* 의 집합이기 때문입니다. string은 std::string의 Element로서 Vector의 기능을 동일하게 수행합니다.

 

비교의 경우는 3가지로 정의할 수 있습니다.

 

1. a < b

2. a == 0

3. a > 0

 

앞서 선언한 string a의 string Vector의 Method에서 compare라는 기능을 이용하여 비교를 수행할 수 있습니다.

 

string a = "aaa";

string b = "bbb";

 

if ( a.compare(b) < 0 )         1) aaa < bbb를 의미

 

if ( a.compare(b) == 0 )        2) aaa == bbb를 의미

 

if ( a.compare(b) > 0 )         3) aaa > bbb를 의미

 

 


1. 참고자료(Reference)


1. http://devmae.tistory.com/317, Accessed by 2014-10-01

2. http://soen.kr/lecture/ccpp/cpp3/31-1-5.htm, Accessed by 2014-10-01

 

반응형
728x90
300x250

[C++] 문자열 / 입력 버퍼 제거

 

fflush는 MS Visual Studio에서는 지원하는 버퍼 제거 함수이다.

대부분 책에는 fflush를 이용하여 제거하라고 한다.

 

하지만, 리눅스에선 이 명령어를 사용하면 죽는다. (Gcc를 통해 확인해보면 알게 될 것이다.)

 

C언어에서의 표준 버퍼 제거 명령어는 Getchar()를 사용하는 것이다.

C++에서는 cin.sync()를 통해 버퍼를 제거할 수 있다고 한다.

 


1. 참고자료(Reference)

 

1. http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=523010&ref=523010, Accessed by 2014-05-04

2. http://stackoverflow.com/questions/257091/how-do-i-flush-the-cin-buffer, Accessed by 2014-05-04

반응형
728x90
300x250

[C언어] 문자열과 포인터 배열

태스트 환경 : Visual Studio 2008

이 예제는 일반적인 문자 배열에 대한 메모리 낭비를 직접적으로 보여주는 예제이다.
더불어 strcpy 함수에 대한 비밀까지 자세히 수록하고 있는 예제이다...

#include <stdio.h>

main()
{
 int i;

 char name[5][20];

 strcpy(name[0], "Jung Jae Une");
 strcpy(name[1], "Han Woo Ryong");
 strcpy(name[2], "Byun Ji Ha");
 strcpy(name[3], "Lee Do Geun");
 strcpy(name[4], "Hong Jae Mok");

 for(i=0; i<5; i++)
  puts(name[i]);

}

결과 :
Jung Jae Une
Han Woo Ryong
Byun Ji Ha
Lee Do Geun
Hong Jae Mok

반응형
728x90
300x250

[C언어] 문자열에 대해서

태스트 : Visual Studio 2008

소스

#include <stdio.h>

main()
{

 char *imsip;
 char imsi;

 imsip = 'a';     /* 1번 */
 imsip = "a";     /* 2번 */

 imsi = 'a';       /* 3번 */
 imsi = "a";       /* 4번 */

}

설명 :

1번
: 'a' 문자를 할당하려고 하는 것이다. imsip = 'a';의 의미는 'a'에 해당하는 아스키코드 정수 값을 imsip에 넣으려고 하는 것과 같습니다. imsip에는 주소 외에는 다른 값이 할당 될 수 없으므로 문법적으로 옳지 않습니다.
2번 : "a"라는 문자열이 메모리의 어딘가에 저장되고 이 저장된 주소를 imsip에 대해 할당하므로 맞는 문장입니다. "a"는 뒤에 널 문자가 추가된 문자열이며 문자가 아닙니다.
3번 : 'a'문자를 imsi에 할당합니다. 아스키 정수 값이 imsi에 할당되므로 문법적으로 하자가 없습니다.
4번 : "a"는 문자열이며 문자열은 주소 값을 리턴하므로 "a"가 저장된 곳의 주소가 imsi에 할당됩니다. 물론 메모리 접근 오류이므로 에러가 나타나게 되겠습니다.

반응형

+ Recent posts