본문 바로가기
프로그래밍 관련/C++

C++ string

by 존버매니아.임베디드 개발자 2020. 4. 26.
반응형

c언어에서 문자열을 사용할 때, 

char 형태의 배열에 담거나

혹은 char* 형태의 포인터 상수를 사용했었다.

 

그리고 c언어에서 문자열은 마지막에 \0 이 들어가는것으로 구분했었다.

 

그리고 c언어에서 string과 관련된 여러가지 작업을 하기 위해서 표준 라이브러리를 사용했는데,

strcpy, strlen 등의 함수가 그것이다.

 

한편, C++ 에는 좀 더 문자열과 관련하여 사용자가 다루기 쉽도록 string이라는 데이터타입이 추가되었음.

 

1) #include<string>  을 호출해서 사용해야 한다.

 

2) string abc;  //이런식으로 선언해서 쓸 수 있다.

    abc="this is string"; // 이런식으로 abc라는 string 변수에 문자열 대입이 가능하다.

    abc="change content"  // 이런식으로 abc라는 string 변수에 추후에 내용 변경도 가능함

또한 지금 예시에서 보듯이 string 변수에는 공백이 포함된 문자열도 대입이 가능하다.

 

한편 여러가지 편리한 기능들을 굉장히 많이 제공하는데, 자세한 내용은 reference를 참조하자.

나는 내가 쓸법한 것들 몇 개만 적어둔다.

 

3) .size();

abc.size(); // 문자열 길이 리턴해줌

 

4) .compare();

문자열 비교해주는 연산인데, 세부적으로 기능이 많은데 내용이 복잡해서 간단한것만 적음

(두 문자열 간에 사전상 순서 비교)

 

string abc="test1";

string abcd="test2;

 

abc.compare(abcd);   // abcd의 string 이랑 abc의 string을 비교해서 

알파벳순서에서 abc의 내용이 앞설경우 -1을 리턴. 내용 같으면 0 리턴. 뒤면 1 리턴 함

즉 현재 test1이 test2보다 알파벳 순서가 앞이기 때문에

abc.compare(abcd)의 결과값은 -1이 된다.

 

5. find()
현재 문자열안에 특정한 패턴의 문자열의 위치를
찾아줌.
ex)
string abc="testAbc1234";
abc.find("Abc");
문자열안에서 Abc가 있는 최초의 위치는 4이므로 4를 리턴함

 

 

6. at(); 문자열 내의 특정한 위치에 있는 문자값 return

string abc="test123";

abc.at(0) ; << t를 return 한다.

abc.at(1) ; <<e를 return 한다. 

 

즉 abc.at(1)='g'; 이런식으로 특정 위치의 한글자 바꾸는것도 가능

이 경우 abc의 string 내용은 tgst123 으로 바뀔 것임

 

7.append()

문자열 뒤에 문자열 혹은 문자 덧붙이기

(다양한 기능 있는데 간단한것만 적음)

 

1)

string abc="this is first";

abc.append(" is added"); // 이거 수행하면 abc에 담긴 내용은 이제 this is first is added가 됨

 

2)

string abc="this is first";

abc.append(3,'c');

(문자 c를 3번, 제일 뒤에 붙인다는 의미)

즉 

이거 수행하면 abc에 담긴 내용은

this is firstccc 가 된다.

 

 

8. push_back, pop_back

문자열 마지막 자리에 특정 문자 하나 더하고, 빼는 기능

 

 

9. 문자열 비교 간단하게

compare 함수 이런거 필요 없이

 

string abc="test1";

string abcd="test2";

 

이럴 때

if(abc==abcd) 이런식으로 변수 비교하듯이 사용도 가능하다.

 

 

 

반응형

'프로그래밍 관련 > C++' 카테고리의 다른 글

C++ map  (0) 2020.05.02
C++ stack  (0) 2020.05.01
c++ sort  (0) 2020.04.29
C++ Queue 사용  (0) 2020.04.26
C++ vector  (0) 2020.04.26