Study/C & C++
-
[C++] stringstream을 while문의 조건으로 사용할 때 주의할 점Study/C & C++ 2022. 10. 13. 14:13
코딩 테스트 문제를 풀다 보면 stringstream으로 값을 추출할 때가 많다. 공백이나 특정 문자 기준으로 잘라내기 위해 while문과 stringstream 객체를 조합하여 사용할 경우가 많다. stringstream객체를 while문의 조건으로 사용할 때, 주의하지 않으면 분명 다 읽었는데 반복을 한 번 더 돌거나 하는 문제가 생길 수 있다. 아래 코드는 공백으로 구분된 문자열을 받아, 공백을 지우고 출력하는 코드이다. #include #include #include using namespace std; int main() { string input; getline(cin, input); // 개행문자 전까지 한 줄 읽음 stringstream ss(input); string buf; while ..
-
[C++] 복사 생성자와 RVO, NRVOStudy/C & C++ 2022. 9. 19. 16:24
01. 복사 생성자란? 같은 타입의 인스턴스를 매개변수로 받는 생성자를 의미한다. class A { public: A() {}; A(const A& a){}; // Copy Constructor }; 02. 복사 생성자가 호출되는 경우 복사 생성자가 호출되는 경우는 세 가지이다. 기존 생성 객체를 사용해 새로운 객체를 초기화하는 경우 Call-By-Value 형식으로 함수의 매개변수를 전달할 때 Value 형태로 함수에서 return할 때 A origin; // 1. A copy(origin); A copy1 = origin; // 2. void Copy(A a) { // do something } // 3. A Copy2() { return A(); } 그렇다면, 아래 코드의 결과는 어떨까? #incl..
-
[따배씨++] 변수, 상수, 전처리기 등 정리Study/C & C++ 2022. 9. 16. 18:35
C++ 기초를 다시 한 번 빠르게 복습할 겸 [홍정모의 따라하며 배우는 C++] 를 다시 보기로 했다. 초반 내용 정리. 01. 변수 변수 객체를 사용하기 위한 메모리의 주소값을 표현한 것... (일반적인 "변할 수 있는 수" 도 말이 된다. CS적으로 생각해보면 메모리의 주소 표현이 좀 더 맞는 말인듯) L-Valule와 R-Value 나중에 더 심도있게 글을 쓸 예정이지만, L-Value는 변수나 상수 형태로 프로그래머가 메모리에 접근할 수 있는 값, R-Value는 일반적인 방식으로 프로그래머가 접근할 수 없는 값이다. (keyword : 리터럴) int x = 4; x = x + 2 에서, x+2는 L-Value일까 R-Value일까? x+2에서 x는 컴파일러에서 4라는 값으로 대체해주고, 연산을..
-
[C] 버퍼(stdin)에 대한 이해와 scanf의 문제점Study/C & C++ 2022. 9. 14. 21:07
1. 버퍼(stdin)이란? 컴퓨터에 키보드 등으로 값을 입력할 때, 입력이 완료되기 전에 임시적으로 값을 가지고 있는 저장소 stdin은 특히, c언어에서 키보드 입력을 받는 버퍼이다. 2. scanf함수 scanf() 는 인자로 주어진 서식 지정자 (%d, %c, %s)에 따라 stdin에 저장된 값을 두 번째 인자로 주어진 변수에 할당한다. 이 과정에서 버퍼에 남아 있는 값 때문에, 이상 동작할 수 있다. 3. scanf의 문제점 %c로 값을 받아올 때 문제가 발생할 수 있다. #include int main() { int num; char c; printf("숫자를 입력하세요 : "); scanf("%d", &num); printf("문자를 입력하세요 : "); scanf("%c", &c); re..