백준 class1) 1157번 단어 공부 관련 C++ 지식
백준 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처럼 점 찍어서 함수 쓰는 방법을 잘 모르겠어서ㅜㅜㅜ
다른 내용 공부 더 하고 다시 보겠다.
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 이 아닌 공간을 해제하려고 한다는 경고 메세지가 나타나게 됩니다.
참고 문서
씹어먹는 C++ - <3. C++ 의 세계로 오신 것을 환영합니다. (new, delete)>
modoocode.com
씹어먹는 C++ - <4 - 5. 내가 만드는 String 클래스>
modoocode.com