본문 바로가기

Programming/C&CPP

C++ fstream 객체를 통한 파일 입출력 C++ 프로그래밍을 하다 보면 파일을 자주 다루게 됩니다. 필요한 데이터를 바이너리에 모두 넣지 않고 별도의 파일로 분리해서 읽어올 수 있습니다. C++은 파일 입출력을 지원하기 위한 ifstream, ofstream 클래스를 제공합니다. 파일 입출력을 처리하는 방법을 알아보겠습니다. 1. 파일 생성 및 열기 C++의 ifstream이나 ofstream을 사용하려면 헤더를 추가해야 합니다. #include ofstream은 파일에 기록할 때 사용하고 ifstream은 파일에 저장된 데이터를 읽어올 때 사용합니다. 입력과 출력이 모두 가능한 fstream 클래스 역시 존재합니다. 클래스의 open() 메소드를 통해 파일을 열거나 생성할 수 있습니다. std::ofstream ofs; ofs.open("파일.. 더보기
C++ string (문자열)의 부분 문자열 추출 (substr) C++ 문자열을 다루다 보면 문자열의 일부를 추출해야 하는 상황이 있습니다. 예를 들어, 파일의 확장자 부분만 추출하고 싶을 때 부분 문자열 추출이 필요합니다. C++ string 클래스는 부분 문자열 추출을 위한 substr()이라는 메소드를 가지고 있습니다. string 클래스의 substr()을 활용하는 방법을 알아보겠습니다. string::substr()은 다음과 같은 형태의 함수입니다. string substr (size_t pos = 0, size_t len = npos) const; 시작 지점(pos)과 길이(len)를 전달받아서 부분 문자열을 리턴합니다. 기본값으로 pos는 0으로 지정되어 있으며 len은 npos가 지정되어 있습니다. len은 문자열의 마지막 문자보다 더 긴 길이가 입력되.. 더보기
C++ 소수점 올림/반올림/내림 방법 C++에서 소수점을 올림 하거나 내림, 혹은 반올림해야 하는 경우가 있습니다. C++의 cmath 헤더에는 올림/반올림/내림을 위한 ceil, floor, round함수가 존재합니다. C++에서 올림/반올림/내림을 하는 방법을 알아보겠습니다. 1. 올림/반올림/내림 방법 cmath 헤더에는 ceil()과 floor() 함수가 존재합니다. ceil() 함수는 올림을 위한 함수이며 floor() 함수는 내림을 위한 함수입니다. 그리고 C++11에서 반올림을 위한 round() 함수가 추가되었습니다. #include #include #include using namespace std; void main() { float float_num = 2.3; double double_num = 6.7; const ch.. 더보기
C++ string (문자열) 소문자, 대문자 변환 C++ 문자열의 대문자를 소문자로 바꾸거나 소문자를 대문자로 변경해야 하는 경우가 있습니다. 문자열을 대소문자 구분없이 검색 시 대문자나 소문자로 전부 변경한 이후에 비교해서 찾을 수 있습니다. C++에서 대문자를 소문자로 변경하거나 소문자로 대문자로 변경하는 방법을 알아보겠습니다. 1. boost::algorithm::to_upper, boost::algorithm::to_lower boost는 C++을 위한 유용한 라이브러리입니다. boost::algorithm::to_upper, boost::algorithm::to_lower를 사용하면 각각 대문자, 소문자로 변환이 가능합니다. boost의 to_upper와 to_lower를 사용하는 방법은 다음과 같습니다. #include #include #in.. 더보기
C++ 벡터(vector) 혹은 배열에서 최대값, 최소값 찾기 벡터(vector)나 배열 등에 저장된 원소들 중에 최대값과 최소값을 찾아야 하는 경우가 있습니다. C++에서 제공하는 max_element와 min_element는 각각 최대값과 최소값을 찾을 수 있습니다. max_element와 min_element를 사용하는 방법을 알아보겠습니다. max_element와 min_element는 algorithm 헤더에 포함되어 있습니다. 최대값과 최소값을 가져오는 예제는 다음과 같습니다. 첫 번째 최대값과 최소값을 가져오는 부분은 배열에서 가져오는 방법입니다. 배열의 첫 번째 값의 주소(변수명)과 마지막 값의 주소 + 1(변수명 + sizeof(변수명) / sizeof(타입))을 전달하면 됩니다. 기본적으로 max_element와 min_element는 이터레이터(.. 더보기
C++ string을 int로 변경하는 방법 프로그래밍을 하다 보면 다양한 타입들을 변환해야 하는 상황이 생깁니다. C++에서 int나 long 타입을 string으로 변환하는 것은 아래에서 확인 가능합니다. 2019/11/15 - [Programming/C&CPP] - C++ int를 string으로 변경하는 방법 C++ int를 string으로 변경하는 방법 C++의 string 클래스는 int나 float, double 같은 타입을 변환하는 메소드를 가지고 있지 않습니다. 다만 표준인 stringstream이나 boost의 lexical_cast를 활용해서 변환이 가능합니다. 아래 링크를 통해 int 등.. psychoria.tistory.com 반대로 string을 int로 변환하는 방법들을 소개합니다. 1. std::stringstream.. 더보기
C++ int를 string으로 변경하는 방법 C++의 string 클래스는 int나 float, double 같은 타입을 변환하는 메소드를 가지고 있지 않습니다. 다만 표준인 stringstream이나 boost의 lexical_cast를 활용해서 변환이 가능합니다. 이 방법 외에도 C++11에서 추가된 std::to_string()을 통해 변환이 가능합니다. 반대로 string을 int로 변환 역시 지원하며 아래 링크에서 확인 가능합니다. 2019/11/18 - [Programming/C&CPP] - C++ string을 int로 변경하는 방법 C++ string을 int로 변경하는 방법 프로그래밍을 하다 보면 다양한 타입들을 변환해야 하는 상황이 생깁니다. C++에서 int나 long 타입을 string으로 변환하는 것은 아래에서 확인 가능합니.. 더보기
C++ std::string 토큰(Token) 분리 방법(Tokenize) 한 문자열에 데이터가 공백 등의 특정 문자를 기준으로 저장되는 경우가 있습니다. CSV 파일 형식의 경우 데이터가 ,(Comma)로 구분됩니다. 각각의 필드를 가져오기 위해서 쉼표를 기준으로 끊어서 문자열을 가져와야 합니다. 이런 과정을 Tokenize라고 하며 대부분의 프로그래밍에서 활용됩니다. C에서는 char 배열을 strtok 함수로 특정 문자를 기준으로 토큰 추출이 가능합니다. C#과 MFC의 Tokenize 방법은 아래 링크에서 확인 가능합니다. 2015/06/22 - [Programming/Win32&MFC&COM] - CString 토큰(Token)으로 분리시키기(AfxExtractSubString) CString 토큰(Token)으로 분리시키기(AfxExtractSubString) C/C.. 더보기