프로그래밍 언어/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