문자열
문자열(String)이란 연속된 문자(Character, Char)의 집합을 말한다.
문자열 생성
- C에서는 문자열을 생성하기 위해서 char 자료형을 배열로 생성하여 문자를 저장하는 방법을 사용했다.
- 하지만, C++로 넘어오면서 STL에서 string 클래스를 제공하여, 보다 편리하게 문자열을 다룰 수 있게 되었다.
- #include <string>을 통해 string 헤더를 불러와야 한다.
컴파일 단계에서 생성
- 1. 문자열 생성과 동시에 초기화
- 2. 문자열 생성한 뒤에, 초기화
#include <iostream>
#include <string>
int main() {
// 1. 생성과 동시에 초기화
std::string str1("Hello World!!");
// 2. 생성 후, 초기화
std::string str2;
str2 = "Hello World!!";
std::cout << str1 << std::endl;
std::cout << str2 << std::endl;
return 0;
}
Hello World!!
Hello World!!
런타임 단계에서 생성
- 1. cin 이용 ▶ 공백이 나타나기 전까지의 문자열만 저장한다.
#include <iostream>
#include <string>
int main() {
std::string str = "";
std::cin >> str;
std::cout << str << std::endl;
return 0;
}
Hello World!!
Hello
- 2. getline 이용 ▶ 공백도 포함하여 문자열을 저장한다.
#include <iostream>
#include <string>
int main() {
std::string str = "";
getline(std::cin, str);
std::cout << str << std::endl;
return 0;
}
Hello World!!
Hello World!!
문자열 리터럴
- C, C++에서 큰 따옴표(")로 묶인 것들을 문자열 리터럴(string literal)이라고 한다.
- 리터럴(literal): 소스 코드 상에서 고정된 값을 가지는 것
#include <iostream>
int main() {
const char *pstr = "literal";
std::cout << pstr << std::endl;
return 0;
}
literal
- "literal" 이라는 문자열 리터럴(상수도 포함)은 프로그램이 실행되면 메모리 상의 텍스트 세그먼트(segment)라는 공간에 보관된다. 세그먼트에 있는 내용들은 읽기만 가능하며, 수정은 불가능하다. ▶ 따라서 const 키워드를 이용함.
- char형 포인터 pstr은 세그먼트 공간에 저장된 "literal"이라는 문자열 리터럴의 시작 주소값을 가리킨다.
- 반면에 char형 배열에 텍스트를 저장하는 경우에는 stack이라는 메모리 공간에 저장되기 때문에 수정이 가능하다.
string에 대한 자세한 사용 방법은 하단의 게시물에 정리하였으므로, 다음을 참고