백준 연습

백준 class1) 1157번 단어 공부 관련 C++ 지식

빙하둘리 2022. 8. 18. 00:30
728x90

백준 class1) 1157번 단어 공부

[복습]

cin<<문자열 이름은 문자를 공백을 기준으로 구분하기에 공백 포함해서 문자열을 받고 싶다 하면 scanf 함수나 fgets 함수 또는 getline 함수를 쓴다.

fgets 함수로 n개의 문자를 받으려면 fgets(문자열 이름, n+2, stdin);을 해야된다. n개의 문자를 치면 "n개의문자"+개행문자+널문자로 출력되기 때문이다.

보통 문자열 문제에서는 널 문자 출력해라 얘기가 없으면 널 문자는 절대 출력되면 안 된다. (from like 어제 푼 문제)

 

[getline 관련 참고 자료]

// stringstream 은 마치 문자열을 입력 스트림으로 생각하게 해줍니다.
  std::istringstream input;
  input.str("1\n2\n3\n4\n5\n6\n7\n");
  int sum = 0;
  for (std::string line; std::getline(input, line);) {
    sum += std::stoi(line);
  }

stringstream은 마치 문자열을 입력 스트림으로 생각하게 해줍니다 이 부분부터

input.str처럼 점 찍어서 함수 쓰는 방법을 잘 모르겠어서ㅜㅜㅜ

다른 내용 공부 더 하고 다시 보겠다.

출처) https://modoocode.com/236

 

C++ 레퍼런스 - string 의 getline 함수

 

modoocode.com

 

 

씹어먹는 C++에서 함수 오버로딩부터 나만의 String 클래스 만들기 부분을 보겠다.

 

 

new, delete --윤성우 강의에서 malloc, free와 어떤 공통점, 차이점?

메모리 할당면에서는 둘이 비슷하지만( 프로그램에 많은 제약이 따르기 때문에 프로그램 실행 시에 자유롭게 할당하고 해제할 수 있는 힙(heap) 이라는 공간이 따로 생겼습니다.

언어에서는 malloc  free 함수를 지원하여 힙 상에서의 메모리 할당을 지원하였습니다. C++ 에서도 마찬가지로 malloc  free 함수를 사용할 수 있습니다.

하지만, 언어 차원에서 지원하는 것으로 바로 new  delete 라고 할 수 있습니다. new 는 말 그대로 malloc 과 대응되는 것으로 메모리를 할당하고 delete  free 에 대응되는 것으로 메모리를 해제합니다.

출처 모두의 코드 씹어먹는 C++ - <3. C++ 의 세계로 오신 것을 환영합니다. (new, delete)>)

new는 객체 생성, delete는 객체 소멸을 한다는 점에서 차이가 있다.

 

new, delete 특징)delete 로 해제할 수 있는 메모리 공간은 사용자가 new 를 통해서 할당한 공간만 가능합니다.

 

아래와 같이 지역 변수를 무리하게 delete로 해제하려고 한다면

#include <iostream>

int main() {
  int a = 5;

  delete &a;

  return 0;
}

위와 같이 Heap 이 아닌 공간을 해제하려고 한다는 경고 메세지가 나타나게 됩니다.

 

 

참고 문서

https://modoocode.com/169

 

씹어먹는 C++ - <3. C++ 의 세계로 오신 것을 환영합니다. (new, delete)>

 

modoocode.com

https://modoocode.com/198

 

씹어먹는 C++ - <4 - 5. 내가 만드는 String 클래스>

 

modoocode.com

 

728x90