본문 바로가기
반응형

C++4

[C++] cin.eof() (파일 데이터를 끝까지 입력 받기) cin.eof() 간혹, 알고리즘 문제에서 입력값의 범위가 주어지지 않는 경우가 있다. 이는 파일이 종료될때까지 입력을 받으라는 의미이므로, cin.eof()를 사용하면 된다. bool타입을 가진다. 만약 파일의 끝을 의미하는 EOF를 읽게 되면, true값으로 바뀌게 된다. 콘솔 창에서는 EOF를 수동으로 넣어주어야 한다. 이때, 윈도우 기준 ctrl+z가 EOF를 의미한다. #include //cin.eof() using namespace std; int n; int main() { while (!cin.eof()) { //EOF를 만날때까지 무한 입력 cin >> n; } } 2019. 4. 26.
[C++] std::find() (문자열 컨테이너에서 특정 문자열 찾기) std::find() find 함수는 iterator 순차열 범위에서 원하는 값을 가진 iterator 반복자를 반환한다. 순차열 범위의 값의 타입은 숫자 혹은 문자, 문자열이다. #include #include #include #include //std::find() using namespace std; vector str = { "I","want","to","be","rich" }; int main() { //rich가 위치한 반복자 찾기 vector::iterator iter = find(str.begin(), str.end(), "rich"); //반복자를 통한 값 변경 (rich -> happy) *iter = "happy"; //happy 출력 cout 2019. 4. 21.
[C++] string::find() (문자열에서 특정 문자 찾기) string::find() string 클래스의 멤버함수로서, str.find("찾는 문자") 로 사용 반환값은 찾는 문자의 첫번째 인덱스값 찾는 문자가 없을 경우는 string::npos를 리턴한다. (npos는 no position으로 쓰레기값 나옴) #include #include //string::find() using namespace std; String str = "I want to be rich"; int main() { //rich 문자 유무 판단 if (str.find("rich") != string::npos) { cout 2019. 4. 21.
[C++] Stack overflow (Visual Studio에서 Stack Size 변경 해보기) Stack overflow는 스택 포인터가 스택의 경계를 넘어설 때 일어난다. 즉, 메모리 영역의 스택범위가 초과한 경우 발생하는 에러다. 메모리에서 스택 영역은 함수 호출 시, 생성되는 지역 변수 및 매개 변수가 저장되는 공간이다. C++ IDE의 대표적인 visual studio는 스택 사이즈의 디폴트값으로 1MB를 제공해준다. 여기서 한번 실험해 보자. 1MB는 약 1000,000B 이므로, 250,001 크기의 int타입 배열을 main함수에 선언해 보도록 한다. (int타입은 4B 크기를 가진다.) 즉, 배열의 크기는 4B X 250,001개 = 1000,004B를 가진다. 과연 Stack overflow에러가 날까? 결과화면 아무 문제없이 컴파일 되는 것을 볼 수 있다. 이는 1MB는 사실 1.. 2019. 4. 2.
반응형