본문 바로가기
GGM/자료구조

20230308 - 자료구조 - 기본개념, 문자열

by DDongYeop 2023. 3. 8.
728x90

 

변수 

 변수 

  - 데이터를 저장하는 상자, 기억 장소의 이름

int i;   //변수 i를 선언
i = 100; //변수 i에 100을 저장

int i = 100; //변수 i을 선언하고 100으로 초기화

int i { 100 };        //int i = 100;과 동일
string s { "hello" }; //string s = "hello";와 동일하다

 

 

변수와 상수

 변수 

  - 데이터를 담는 상자 

  - 변할 수 있는 수 

 상수

  - 값이 한번 정해지면 변경할 필요가 없는 데이터

  - 상수표현 방법 (차이는 메모리 할당 여부)

   1. 전처리기 문장을 사용 : #define PI 3.242592

   2. const 키워드를 사용 : const double PI = 3.141592; (권장)

 

 

자료형 

  - 처리, 저장하고자 하는 자료의 형태를 나타냄

  - 데이터 낭비를 막기 위해 용도 맞는 메모리를 할당하기 위해 자료형을 사용 

 

논리형

  - bool형의 변수는 참 또는 거짓만을 가질 수 있음

  - 참과 거짓은 원래 정수가 아니지만, 정수가 와야할 위치라면 1 또는 0이 된다. 

 

 

auto

  - C#에서의 var과 같은 역할을 한다. 

  - 컴파일 타임에 자동으로 타입이 추론된다. 

  - 타입의 이름이 길 경우 타이핑을 줄여주는 효가가 있다. 

auto a;     // Compile Error
auto a = 1; // auto -> int

 

 

연산자 

 대입 연산자 

a = b; 
//a에 b를 대입하고 b을 반환

 

 나머지 연산자

a & b;
// a를 b로 나눈 나머지를 반환

 

 증감 연산자

int a = 1;
cout << ++a << endl; // 2가 출력 
cout << a++ << endl; // 2가 출력 
// 최종적으로 a는 3

int b = 1;
cout << --b << endl; // 0이 출력
cout << b-- << endl; // 0이 출력 
// 최종적으로 b는 -1

 

 비교 연산자

a == b; //a와 b가 같다
a != b; //a와 b와 같지 않다 
a > b;  //a가 b보다 크다 
a < b;  //b가 a보다 크다
a >= b; //a가 b보다 크거나 같다
a <= b; //b가 a보다 크거나 같다

 

 논리 연산자

a && b; //a 또는 b가 둘이 같을때
a || b; //a 또는 b가 true값일때

 

 삼항 연산자

int index = a == b ? 1 : 0;
// 이조건식이 참일때, 즉 a와 b가 같다면 index에는 1이 들어감. 
// 하지만 이 조건식이 거짓이때는 0이 들어가게 된다.

 

 sizeof

bool isTrue;
char[] array = new char[10];

cout << sizeof(int);    // int의 byte수인 4를 반환
cout << sizeof(isTrue); // isTrue의 byte수인 1을 반환
cout << sizeof(array);  // array의 배열값 10을 반환

 

 범위 연산자

이름::식별자; // ::왼쪽으론 이름 공간이나 클래스 이름을 넣고,
             // 오른쪽에는 식별자를 넣음

 

 

 

난수

  - rand() :내부적으로 생성된 0 ~ 32767 사이의 값을 반환

  - srand() : 난수 생성의 기준값(시드값)을 설정.

                   사용자가 srand함수를 호출하지 않으면 시드 값이 1로 설정됨

  - time(NULL) : 1970년 1월 1일 자정 이후 지금까지 경과된 시간(초)를 반환.

#include <iostream>
#include <time.h>

using namespace std;

int main()
{   
    srand((unsigned int)time(NULL));
    int randomnum = rand() % 4;
    cout << randomnum << endl; //0 ~ 3 사이의 랜덤 값을 출력
}

 

 

string 클래스사용하기

#include <string>
using namespace std;

void main()
{
    string str;                 // string 객체를 생성
    string str = "Hello Word!"); // string 객체를 생성하고 초기화

 

 

getline()

  - 공백이 포함된 문자열을 입력 받을 수 있는 함수 (in string 라이브러리)

string str;
getline(cin, str); // 한 줄에있는 모든 입력물을 str에 저장 (곻백포함)

 

 

cin.getline (문자열을 저장할 공간, 최대크기)

  - 공백이 포함된 문자열을 입력 받을 수 있는 함수 (in iostream 라이브러리)

char arr[30];
cin.getline(arr, 30); //30자 안에서 공백이 있는 문장 입력 받기 가능

 

 

cin.ignore(0

  - 입력 버퍼를 비워주는 함수

  - cin으로 입력 받을 경우, 버퍼에 '\n'이 남음

  - cin다음 입력을 cin으로 받을 경우 전 버퍼에 있던 공백 및 개행 문자를 무시하기 때문에 버퍼를 비워줄 필요가 없음

  - cin 다음 입력을 getline으로 받을 경우, 전 버퍼에 있던 공백 및 개행 문자를 포함해서 입력 받기 때문에 버퍼를 지워주는 작업이 필요

  - getline 다음 입력을 getline으로 받을 경우, getline은 '\n'를 버퍼에 포함시키지 않기 때문에 버퍼를 비워줄 필요가 없다.

 

 

string 클래스 멤버 함수 

 

문자열 지우기

 1. 매개변수가 숫자일때 

  1) 매개변수가 1개일 때

erase(3); // 문자열 인덱스 3부터 끝까지 삭제

  2) 매개변수가 2개일 때

earse(3, 5); //문자열 인덱스 3에서 5길이 만큼 삭제

 2. 매개변수가 반복자 일때 

  1) 매개변수가 1개일 떄

erase(str.begin()); //반복자가 가리키는 지점만 삭제

  2) 매개변수가 2개일 때

erase(str.begin(), str.end()-3); //첫번째 반복자에서 두번째 반복자까지 삭제

 

문자열 치환

 1. replace

  대상 문자열에서 지정한 위치부터 원하는 문자로 바꿔줌 

   문자열.replace(시작 위치, 길이, 치환 문자열); 

string a = "DDD YYYYY KKK";
a.replace(10, 3, "KIM");
cout << a << endl; // DDD YYYYY KIM
a.replace(10, 3, "ZZANG");
cout << a << endl; // DDD YYYYY ZZANG
a.replace(10, 3, "");
cout << a << endl; // DDD YYYYY

 2. regex_replace

  대상 문자열에서 정규식으로 지정한 문자를 검색하여 문자열로 변환

   #include <regex>

   regex_replace(대상 문자열, regex(정규식), 치환 문자열)

string a = "안녕? 나는 수박을 좋아해";
a = regex_replace(a, regex("수박"), "박수");
cout << a << endl; //안녕? 나는 박수를 좋아해

 

728x90

'GGM > 자료구조' 카테고리의 다른 글

20230309 - 자료구조 - 제어구조, 함수  (0) 2023.03.09
20230302 - 자료구조 - 기초 사항  (0) 2023.03.02

댓글