프로그래밍 공부

프로그래밍 700

카테고리 설명
  • C++개발자가 string 타입을 사용하지 않는 여러가지 이유가 있다. 첫번쨰는 단순히 string 타입의 존재여부를 몰라서이다. 두번째는 string타입이 각 프로그래머가 사용할 상황에 적합한 동작을 하지 않기 떄문이다. 세번째는 사용하는 개발 프레임워크가 자신만의 문자열을 사용하기 때문이다. 예시로, 마이크로소프트의 MFC로 CString이라는 자신만의 문자열 타입을 별도로 정의하여 사용한다. 프레임워크 문제는 하위 호환성이나 과거 코드의 재활용 문제와 연관되어 있다.

  • 2.1.4 로우 문자열 리터럴 로우 문자열 리터럴(raw string literal)에서는 \t, \n과 같은 역슬래시를 통한 이스케이프 시퀸스를 일반 문자열로 취급한다. string str = "Hello "World"!"; // 컴파일에러 만약, 문자열 리터럴을 위와같이 작성하면 컴파일 에러가 발생한다. 보통의 문자열에서 따옴표를 표현하려면 다음과 같이 이스케이프 시퀸스를 사용해야 한다. string str = "Hello \ "World\"!"; 로우 문자열 리터럴을 이용하면 이스케이프 시퀸스를 사용하지 않아도 된다. 로우 문자열 리터럴은 R"( 로 시작하고 )" 로 끝난다. string str = R"(Hello "World"!)"; 로우 문자열 리터럴은 여러줄에 걸쳐 작성될 수도 있다. 예를들어..

  • 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..

  • 2.1.3 C++ string 클래스 C++는 표준 라이버리를 통해 훨씬 진보된 문자열을 제공한다. C++의 std;:string 클래스는 에서 제공하는 문자열 처리 기능을 대부분 지원하면서, 제대로만 사용한다면 메모리 할당 부분까지 대신 관리해준다. string 클래스는 헤더 파일에 정의되어 있다. C스타일 문자열의 문제점 C++ strnig의 필요성을 이해하려면, C스타일 문자열의 장점과 단점을 알아야 한다. 장점 단순하다. 기본문자 타입과 배열구조만 사용한다. 가볍가. 제대로 사용하면 꼭 필요한 메모리 공간만 점유한다. 저수준이다. 로우 메모리상에서 쉽게 조작하거나 복제할 수 있다. C 프로그래머에게 매우 익숙하다. 단점 범용 문자열 데이터 타입이므로 고급 작업을 하기에는 너무 많은 노력이 추가로 ..

  • 2.1.2 문자열 리터럴 C++ 프로그램에서는 (사실 거의 모든 프로그램) 따옴표로 둘러싼 문자열을 흔히 볼 수 있다. 예를들어 문자열 hello를 출력한다고 했을 때 cout

  • 문자열은 프로그램을 작성할 때 거의 항상 사용한다. C언어는 문자열 표현을 위해 null로 종결되는 단순한 ASC2 문자열을 사용할 수 밖에 없다. 그런데 단순한 문자 배열로 문자열을 표현하면, 버퍼 오버플로 같은 보안 위험 등 여러가지 문제가 발생한다. C++ STL은 더 안전하고 사용하기 쉬운 std::string 클래스를 제공하여, C스타일 문자열의 단점을 피할 수 있다. 2.1 동적 문자열 프로그래밍 언어에서 문자열은 최 우선순위로 지원되는 기능이다. 자유자재로 바꾸는 크기는 물론, 부분추출, 추출하여 바꾸기 등의 여럭 고급 기능을 지원한다. 하지만, C에서의 문자열 지원은 상당히 부실한데, 단순히 문자의 배열만 존재하고, 편리하게 사용할 수 있는 문자열 데이터 타입이 따로 존재하지 않는다. 문자..