본문 바로가기
IT, 컴퓨터

[C++] string library, STL Container에서의 string 사용법

by 별찌파파 2024. 1. 6.
728x90
반응형
SMALL

Photo by Markus Spiske on Unsplash

c++ 표준 라이브러리의 string 사용법

 

C++ 표준 라이브러리에는 문자열 조작과 관련된 기능을 제공하는 <string> 헤더가 포함되어 있습니다. 이 헤더는 C++에서 문자열을 다루는데 필요한 여러 유용한 함수와 클래스를 제공합니다. 아래는 <string> 라이브러리의 몇 가지 중요한 요소들입니다:

1. std::string 클래스:

std::string 클래스는 동적으로 크기가 조정되는 문자열을 나타냅니다. 기본적으로 C 스타일의 문자열과 호환되지만, 보다 안전하고 편리한 사용을 위한 여러 기능을 추가로 제공합니다.

#include <string>

std::string myString = "Hello, World!";

2. 문자열 조작 함수:

std::string 클래스는 문자열 조작을 위한 다양한 멤버 함수를 제공합니다. 몇 가지 예제:

  • length() 또는 size(): 문자열의 길이를 반환합니다.
    int length = myString.length();​​
  • append(): 문자열에 다른 문자열을 추가합니다.
    myString.append(" Welcome!");
  • substr(): 부분 문자열을 추출합니다.
    std::string sub = myString.substr(0, 5); // "Hello"
  • find(): 특정 문자열 또는 문자를 검색합니다.
    size_t pos = myString.find("World");​

3. 문자열 비교:

std::string은 문자열 간의 비교를 지원하는 다양한 함수를 제공합니다.

  • compare(): 두 문자열을 비교합니다.
    int result = myString.compare("Hello, World!");​

4. 문자열 변환:

std::string은 C 스타일 문자열로부터의 변환과 반대로의 변환을 용이하게 지원합니다.

  • c_str(): C 스타일의 문자열로 변환합니다.
    const char* cString = myString.c_str();​
  • std::to_string(): 기본 데이터 타입을 문자열로 변환합니다.
    int num = 42;
    std::string numString = std::to_string(num);
     

5. 문자열 입력 및 출력:

C++ 스트림을 사용하여 문자열을 표준 입출력에 사용할 수 있습니다.

  • << (스트림 출력 연산자): 문자열 출력
    std::cout << myString << std::endl;​
  • >> (스트림 입력 연산자): 문자열 입력
    std::cin >> myString;

 

STL Container 에서의 string 문자열 사용법

 

C++ STL(Standard Template Library)은 여러 가지 컨테이너 클래스를 제공하는데, 이 중에서 std::string은 문자열을 다루기 위한 특별한 컨테이너입니다. 아래에 std::string을 사용하는 몇 가지 예제를 제시합니다.

1. std::string 선언과 초기화:

#include <string>

std::string str1;          // 빈 문자열로 초기화
std::string str2 = "Hello, World!";  // 문자열로 초기화
std::string str3(5, 'A');  // 'A' 문자 5개로 초기화

2. 문자열에 값 추가 및 변경:

std::string greeting = "Hello";
greeting += ", ";
greeting.append("World");

 

3. 문자열의 길이 및 접근:

std::string text = "Example";
int length = text.length();  // 또는 text.size()
char firstChar = text[0];    // 인덱스로 접근

 

4. 문자열 비교:

std::string str1 = "apple";
std::string str2 = "banana";

if (str1 == str2) {
    // 문자열이 같음
} else if (str1 < str2) {
    // str1이 str2보다 사전적으로 앞에 옴
} else {
    // str1이 str2보다 사전적으로 뒤에 옴
}

 

5. 부분 문자열 추출:

std::string fullString = "Hello, World!";
std::string subString = fullString.substr(0, 5);  // "Hello"

 

6. 문자열 찾기:

std::string text = "The quick brown fox";
size_t position = text.find("brown");  // "brown"이 시작하는 위치
if (position != std::string::npos) {
    // 찾았을 때의 처리
} else {
    // 찾지 못했을 때의 처리
}

7. 문자열 입력 및 출력:

#include <iostream>

std::string userInput;
std::cout << "Enter a string: ";
std::cin >> userInput;

 

8. 문자열 비교 (대소문자 구분 및 무시):

std::string str1 = "apple";
std::string str2 = "Apple";

if (str1.compare(str2) == 0) {
    // 두 문자열이 같음
}

if (str1.compare(0, 5, str2, 0, 5) == 0) {
    // 첫 다섯 글자를 비교하여 같음
}

if (str1 == str2) {
    // 대소문자 구분하여 같음
}

if (str1.compare(0, 5, str2, 0, 5, std::less<int>()) == 0) {
    // 대소문자 구분하지 않고 비교하여 같음
}

 

9. 문자열 대체:

std::string sentence = "I like programming in C++.";
size_t pos = sentence.find("C++");
sentence.replace(pos, 3, "C#");

 

10. 문자열에서 특정 문자 제거:

std::string str = "Hello, World!";
str.erase(std::remove(str.begin(), str.end(), ','), str.end());

 

11. 문자열 반복:

std::string str = "abc";
int repeatCount = 3;
std::string repeated = std::string(repeatCount, ' ') + str;

 

12. 문자열 채우기:

std::string str = "C++";
str.insert(1, "Sharp");

 

13. 공백 제거:

std::string stringWithWhitespace = "   Hello, World!   ";
stringWithWhitespace.erase(std::remove_if(stringWithWhitespace.begin(), stringWithWhitespace.end(), ::isspace), stringWithWhitespace.end());

 

14. 문자열 분리:

#include <sstream>
#include <vector>

std::string csvData = "John,Doe,30";
std::vector<std::string> tokens;
std::istringstream tokenStream(csvData);
std::string token;
while (std::getline(tokenStream, token, ',')) {
    tokens.push_back(token);
}

 

15. 문자열 포맷팅:

#include <iomanip>

int number = 42;
std::string formattedString = "The answer is " + std::to_string(number);
formattedString = "Value: " + std::to_string(3.14) + ", Pi: " + std::to_string(M_PI);

 

이와 같이 std::string은 문자열 처리를 위한 다양한 기능을 제공합니다. 표준 라이브러리 함수들은 문자열 조작이나 검색, 변환 등에 유용하게 사용될 수 있습니다.

728x90
반응형
LIST