이 String class는 표준 C++ 라이브러리의 string class와 다르다는데 주의하라.
이 특별한 String class는 직접 만들어진 것이고, Java 프로그래머들이 C++을
쉽게 사용하도록 하기 위해 만들어졌다. 만약 당신이 C++과 더 익숙하다면
표준 C++ 라이브러리에 제공되는 진짜 string class 를 사용 하는 것이 좋다.
String class를 사용하기 위해, 23절의
"example_String.cpp" 예제 프로그램과 23절의
String class를 보아라.
'String class' 는 char와 char * 타입을 완벽하게 대신할
수 있다.
'String class'를 char 처럼 사용할 수도 있고,
여러가지 다양한 기능도 사용할 수 있다.
23절 에 주어진 makefile에서 만들어지는 'libString.a'를
링크해야하고, C++ 라이브러리가 위치한 모든 곳의 라이브러리를 /usr/lib 나 /lib
디렉토리에 라이브러리를 복사해넣어야 한다.
'libString.a'를 사용하기 위해서는, 다음과 같이 컴파일하라.
g++ example.cpp -lString
다음에 주어진 예제 코드를 보라.
String aa;
aa = "Creating an Universe is very easy, similar to creating a baby human.";
// 프로그램에서 aa.val()을 'char *' 같이 사용할 수 있다.
for (unsigned long tmpii = 0; tmpii < aa.length(); tmpii++)
{
//fprintf(stdout, "aa.val()[%ld]=%c ", tmpii, aa.val()[tmpii]);
fprintf(stdout, "aa[%ld]=%c ", tmpii, aa[tmpii]);
}
// 실제로 'char *'로 사용하면..
for (char *tmpcc = aa.val(); *tmpcc != 0; tmpcc++)
{
fprintf(stdout, "aa.val()=%c ", *tmpcc);
}
5.1. 연산자
'String class'
는 아래와 같은 연산자를 제공한다 :-
Equal to ==
Not equal to !=
Assignment =
Add to itself and Assignment +=
String concatenation or addition +
연산자를 사용하는 예제를 보자.
String aa;
String bb("Bill Clinton");
aa = "put some value string"; // assignment operator
aa += "add some more"; // Add to itself and assign operator
aa = "My name is" + " Alavoor Vasudevan "; // string cat operator
if (bb == "Bill Clinton") // boolean equal to operator
cout << "bb is equal to 'Bill Clinton' " << endl;
if (bb != "Al Gore") // boolean 'not equal' to operator
cout << "bb is not equal to 'Al Gore'" << endl;
5.2. 함수
String class에서 제공되는 함수들은 Java 의 String class와
같은 이름을 갖는다.
함수 이름과 동작은 Java의 String class와 완전히똑같다.
StringBuffer class역시 제공된다.
이들은 Java와 C++간의 포팅을 쉽게 할 것이다 (잘라내기 & 붙여넣기와 최소한의 코드 조정
만을 필요로 할 것이다).
Java의 함수에 들어있는 코드를 C++의 멤버함수로 복사하기만 하면 될 것이고,
최소한의 변경만으로도 C++에서 잘 컴파일 될 것이다.
또다른 이점은 Java와 C++을 모두 사용하는 개발자들이 둘 간의 문법이나 함수 이름을
따로따로 기억할 필요가 없어진다는 것이다.
예를들어 integer를 문자열로 바꾸는 것을 보면,
String aa;
aa = 34; // '=' 연산자가 int를 string으로 바꾼다.
cout << "The value of aa is : " << aa.val() << endl;
aa = 234.878; // '=' 연산자가 float를 string으로 바꾼다.
cout << "The value of aa is : " << aa.val() << endl;
aa = 34 + 234.878;
cout << "The value of aa is : " << aa.val() << endl;
// 출력은 '268.878'일 것이다.
// casting이 필요하다.
aa = (String) 34 + " Can create infinite number of universes!! " + 234.878;
cout << "The value of aa is : " << aa.val() << endl;
// 출력은 '34 Can create infinite number of universes!! 234.878'일 것이다.
String class의 함수이름에 대한 자세한 내용은
23절 를 참고해라. 같은 String.h파일이 다음 섹션에도
나올 것이다.
5.3. String class의 이름 바꾸기
5.3.1. Case 1: 단순한 이름 바꾸기
만약 String class의 이름이 맘에 들지 않는다면, "typedef"
를 이름을 바꾸기 위해 사용할 수 있다.
String.h를 include하는 모든 파일에 다음의 내용을 넣어라 :
// String이라는 이름이 맘에 들지 않는다면, 다음과 같이 바꾸어라.
typedef String StringSomethingElseIwant;
// 이제 코드는 다음과 같이 될 것이다.
int main()
{
StringSomethingElseIwant aa_renstr;
aa_renstr = "I renamed the String Class using typedef";
// .....
}
5. String class 사용하기
이 String class는 표준 C++ 라이브러리의 string class와 다르다는데 주의하라. 이 특별한 String class는 직접 만들어진 것이고, Java 프로그래머들이 C++을 쉽게 사용하도록 하기 위해 만들어졌다. 만약 당신이 C++과 더 익숙하다면 표준 C++ 라이브러리에 제공되는 진짜 string class 를 사용 하는 것이 좋다.
String class를 사용하기 위해, 23절의 "example_String.cpp" 예제 프로그램과 23절의 String class를 보아라.
'String class' 는 char와 char * 타입을 완벽하게 대신할 수 있다. 'String class'를 char 처럼 사용할 수도 있고, 여러가지 다양한 기능도 사용할 수 있다. 23절 에 주어진 makefile에서 만들어지는 'libString.a'를 링크해야하고, C++ 라이브러리가 위치한 모든 곳의 라이브러리를 /usr/lib 나 /lib 디렉토리에 라이브러리를 복사해넣어야 한다. 'libString.a'를 사용하기 위해서는, 다음과 같이 컴파일하라.
5.1. 연산자
'String class' 는 아래와 같은 연산자를 제공한다 :-
연산자를 사용하는 예제를 보자.Equal to ==
Not equal to !=
Assignment =
Add to itself and Assignment +=
String concatenation or addition +
5.2. 함수
String class에서 제공되는 함수들은 Java 의 String class와 같은 이름을 갖는다. 함수 이름과 동작은 Java의 String class와 완전히똑같다. StringBuffer class역시 제공된다. 이들은 Java와 C++간의 포팅을 쉽게 할 것이다 (잘라내기 & 붙여넣기와 최소한의 코드 조정 만을 필요로 할 것이다). Java의 함수에 들어있는 코드를 C++의 멤버함수로 복사하기만 하면 될 것이고, 최소한의 변경만으로도 C++에서 잘 컴파일 될 것이다. 또다른 이점은 Java와 C++을 모두 사용하는 개발자들이 둘 간의 문법이나 함수 이름을 따로따로 기억할 필요가 없어진다는 것이다.
예를들어 integer를 문자열로 바꾸는 것을 보면,
String class의 함수이름에 대한 자세한 내용은 23절 를 참고해라. 같은 String.h파일이 다음 섹션에도 나올 것이다.
5.3. String class의 이름 바꾸기
5.3.1. Case 1: 단순한 이름 바꾸기
만약 String class의 이름이 맘에 들지 않는다면, "typedef" 를 이름을 바꾸기 위해 사용할 수 있다.
String.h를 include하는 모든 파일에 다음의 내용을 넣어라 :
5.3.2. Case 2: 이름이 겹칠 때
다른 같은 이름을 가진 class와 이름이 겹치는데, 두 class를 모두 사용하고 싶다면, 다음과 같은 방법을 써라. String.h를 include하는 모든 파일에 다음의 내용을 넣어라.
Recent Posts
Archive Posts
Tags