프로그래밍 언어/C++

[게임 프로그래머 입문 올인원] 모던 C++ : std::string (80강)

순정법사 2024.03.30

A. 모던 C++

1. std::string

a. C 스타일의 문자열의 한계점

만약 아래와같이 같은 문자를 비교하는 코드를 작성한다면

 

주소값을 비교하기때문에 같지않음

 

또한 문자열을 복사하거나 수정하면 특정 함수를 사용해서 이용해야 함 

➡ 사용성이 안좋음

 

b. std::string 

🌟 C++ 표준 라이브러리에서 제공하는 문자열 클래스

 

  1. 가변 길이 문자열: 문자열의 길이가 동적으로 조정되는 가변 길이의 문자열을 저장
  2. 문자열 조작: 문자열을 수정하고 조작하는 다양한 멤버 함수들을 제공. ex) 결합, 분할, 삽입, 제거, 변경
  3. 편리한 접근: 인덱스 기반 접근을 지원하여 특정 위치의 문자에 쉽게 접근가능
  4. null 종료 문자열 아님: null 종료 문자열(null-terminated string)이 아니여서 문자열 안에 null 문자('\0')가 포함될 수 있음
  5. 표준 입출력 지원: std::string 객체는 표준 입출력 객체(std::cin 및 std::cout)와 함께 사용할 수 있음

 

⏳ 예제

#include <iostream>
#include <string>

int main() {
    // 문자열 생성
    std::string str = "Hello, world!";
    std::string str2 = "Hello, world!";

	// 문자열 비교
    if(str == str2){}
    
	// 문자열 복사
    string str3
    str3 = str; //원본 영향 X
    
    //문자열 찾기
    auto c = str.find("Roo");
    if( c == std::string::npos){
    	cout << "not found" ;
    }
    
    // 문자열 길이
    std::cout << "Length of string: " << str.length() << std::endl;

    // 문자열 접근
    std::cout << "First character: " << str[0] << std::endl;

    // 문자열 결합
    std::string greeting = "Hello";
    std::string name = "Alice";
    std::string message = greeting + ", " + name + "!";
    std::cout << "Message: " << message << std::endl;

    // 문자열 입력
    std::cout << "Enter your name: ";
    std::cin >> name;
    std::cout << "Hello, " << name << "!" << std::endl;

    return 0;
}

 

추가로 교체하는 코드와

 

문자열 자르기, 아래는 c스타일

 

 

 


출처 : https://www.inflearn.com/course/%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EC%9E%85%EB%AC%B8-%EC%98%AC%EC%9D%B8%EC%9B%90-rookiss#curriculum

 

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -

어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프

www.inflearn.com