본문 바로가기

c++

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)2016/01/23 - [Programming/CSharp] - String.Split으로 토큰 단위.. 더보기
C++ 홀수/짝수(홀짝) 구분 방법 프로그래밍 언어에서 정수의 홀수/짝수 구분은 비교적 간단한 주제 중 하나입니다.간단한 주제이면서도 상당히 활용도가 높습니다.C++에서 간단하게 정수의 홀짝을 구분하는 방법은 다음과 같습니다. 1. % 연산자(Modulus operator) 먼저 % 연산자로 사칙연산 급으로 취급되는 가장 기본적인 연산자입니다.Modulus operator로 불리며 정수 나눗셈의 몫이 아닌 나머지 값을 리턴합니다.정수를 2로 나눴을 때 나머지가 0이기 때문에 이것을 기준으로 홀수/짝수 구분이 가능합니다. 2. & 연산자(Bitwise AND operator)비트 연산자 중 하나인 & 연산자를 사용하는 방법 역시 가능합니다.짝수 정수의 가장 우측에 있는 비트가 0인 점을 이용하는 방법입니다.정수와 1을 & 연산자로 연산하면 .. 더보기
C++ 스택을 사용한 괄호 짝 맞추기(Balanced brackets) 괄호 짝 맞추기(Balanced brackets)는 여는 괄호와 닫는 괄호의 짝이 맞는지 확인하는 문제입니다. 가장 나중에 열렸던 괄호 타입이 가장 먼저 닫혀야 됩니다. 이런 특성은 스택(Stack) 자료형을 활용하면 쉽게 구현이 가능합니다. 여는 괄호는 모두 스택에 넣고 닫는 괄호가 나올 때 스택의 최상단(Top)에 위치한 여는 괄호와 비교합니다. 그리고 닫는 괄호가 나왔을 때 스택이 비어 있으면 잘못된 짝으로 구성된 것입니다. 모든 문자를 비교한 이후에 스택이 깔끔하게 비었으면 완전한 괄호 짝이 맞는 문자열이 됩니다. 전체적인 코드는 다음과 같습니다. 30줄 남짓의 코드로 쉽게 구현이 가능합니다. 추가로 브라켓을 추가해야 하는 경우 map 타입의 pairs에 여는 괄호와 닫는 괄호 쌍을 입력해주면 됩.. 더보기
[C++11] 배열을 편리하게 사용할 수 있는 std::array 배열은 한 번 크기가 정해지면 동적으로 변경되지 않습니다.동적으로 크기를 변경하려면 벡터 등의 STL 컨테이너를 활용하면 됩니다.배열을 STL 컨테이너 형태로 사용하는 것이 바로 std::array입니다.동적인 할당과 해제가 없어서 성능상 이점이 있는 배열을 편리한 사용을 할 수 있도록 해줍니다.std::array는 헤더를 포함한 이후에 사용이 가능합니다.기본적인 std::array의 사용 방법은 다음과 같습니다. #include #include int main() { // initialization std::array data = {0, 1, 2, 3, 4}; // get size std::cout 더보기
C++ volatile 키워드 사용 C++ volatile 키워드는 다른 키워드에 비해서 잘 사용되지 않는 편입니다. 일반적으로 volatile 키워드는 해당 변수의 컴파일러 최적화를 제한하는 용도로 사용합니다. 컴파일러는 훌륭하게 최적화를 실행하지만 volatile을 사용해서 최적화를 제한해야 하는 상황이 있습니다. 1. 첫 번째 예제 먼저 다음과 같이 멀티스레드 환경의 경우입니다. #include #include #include int i; void Func1() { extern int i; int count = 0; i = 0; while (true) { if (1 == i) std::cout 더보기
[C++11] 가중치를 적용해서 랜덤 넘버(Random Number) 생성 C++11에 추가된 Random Number 생성은 좀 더 정교한 난수 생성이 가능합니다.기본적인 난수 생성에 관한 내용은 아래 링크에서 확인 가능합니다.2015/05/22 - [Programming/CPP11&14] - [C++11] 새로워진 random number 생성랜덤한 번호를 생성할 때 각 값마다 가중치를 주고 싶은 경우가 있습니다.경품을 추첨할 때 각 등수마다 다른 확률로 선별하고 싶을 때 사용 가능합니다.가중치가 적용된 랜덤은 이산 분포(Discrete Distribution)를 활용해서 쉽게 구현이 가능합니다.생성 코드는 다음과 같습니다. #include #include template int MakeRandNum(std::vector vecProb) { std::random_device.. 더보기